首先,我们需要知道什么是水仙花数

水仙花数是一个三位数,其每个位上的数字的三次幂之和等于它本身

例如: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 的值,大功告成

好好爱自己
最后更新于 2025-10-31