首先,我们需要知道什么是水仙花数
水仙花数是一个三位数,其每个位上的数字的三次幂之和等于它本身
例如:1^3+5^3+3^3=153,所以153是一个水仙花数
找出水仙花数的简单代码如下
for i in range(100,1000):
a = i % 10
b = (i % 100) // 10
c = i // 100
if a*a*a + b*b*b + c*c*c == i:
print(i)
现在我们来分析下这串代码
将所有的水仙花数定义为 i ,因为水仙花数是一个三位数,所以 i 应该在[100,999]之间.在Python中范围可以简单理解为左闭右开,故 i 的范围为 (100,1000)
现在需要提取水仙花数中的个位,十位,百位.如何从中提取呢?
拿153为例, 153/10=15余3,而余数3正好为个位上的数.153/100=1.53 向下取整为 1,即百位上的数.
十位上的数又如何提取呢?
不难发现, 153%100=53, 53//10=5,十位上的数成功被提取
对于 i 而言也是如此
此处代码中定义变量a为个位上的数,b为十位上的数,c为百位上的数
如果满足水仙花数,则有 a*a*a+b*b*b+c*c*c = i
最后打印出 i 的值,大功告成
Comments NOTHING