Python----- 寻找100--1000内的水仙花数
水仙花数介绍
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。------摘自百度百科
实现方法
刚开始学,这里使用简单的循环控制语句while。
首先,先输出100-1000的数,这个区间内的数都有可能称为水仙花数。
i=100
while i<=1000:
print(i)
i+=1
结果如图。
其次,水仙花数是每个位上的数字的 3次幂之和等于它本身,所以,我们要进行拆分,得到每位上的数。可以想到,对这个三位数 i 整除100可以得到它的百位, i 对100的求模后再整除10可以得到十位, i 进行100的求模后再对10求模可以得到个位。
例如 i = 548,代码如下:
i=548
a=i//100 #百位
b=(i%100)//10 #十位
c=(i%100)%10 #个位
print('百位 ',a)
print('十位 ',b)
print('个位 ',c)
接下来判断它们三次方的和是否等于 i 本身。
# n位数(n≥3),求每个位的n次幂的和等于它本身
i=100
j=0 #统计水仙花数的个数
while i<1000:
a=int(i/100)
b=int((i%100)/10)
c=int((i%100)%10)
if a**3+b**3+c**3 == i:
print(i)
j+=1
i+=1
print('水仙花数的个数:',j)
#//表示整除
结果如下:
这里,我是用的是 int()函数求整,一开始自己做没想到有整除,以为和其他语言一样 ‘ / ’ 得出的结果就是整数,实际上python的出的是小数,需要用 ‘ // ’ 表示整除。
这边使用了 j 来记录水仙花数的个数。
以上就是水仙花数的简单实现方法。