C、Python实现水仙花数输出

妖精的绣舞 提交于 2019-11-30 00:53:17

水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

#include <stdio.h>

int main()

{

//定义三位数num,个位数sd,十位数td,百位数hd

int num, sd, td, hd;

//循环所有三位数

for( num=100 ; num<1000 ; num++ )

{

//获取三位数字num百位上的数字

	hd = num/100;

//获取三位数字num十位上的数字

td =(num-hd*100)/10 ;

//获取三位数字num个位上的数字

sd = num%10;

//水仙花数的条件

if( num==hd*hd*hd+td*td*td+sd*sd*sd ) 

{

printf("水仙花数字:%d\n", num); 

}

}

return 0; 

}

for i in range(100,1001):
    s=str(i)
    one=int(s[-1])
    ten=int(s[-2])
    hun=int(s[-3])
    if i==one**3+ten**3+hun**3:
        print(i)

转载

for num in range(100,1000): #如果num在[100,1000)范围,就依次循环取出num的值,第一次取100,下一次取101....最后一次取999
    bai = num // 100 # //取整符号,对100取整,得到百位上的数字
    shi = num // 10 % 10  #得到十位上的数字 %取余符号
    ge = num % 10  #得到个位上的数字
    if(bai**3+shi**3+ge**3==num): #各位数字和等于num
         print(num, end = ' ')   #输出符合if条件的数字  end = ' '使得输出的数不换行,以空格隔开同行输出
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!