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

思路一:

将整数除以10取余,得到末尾数;
将整数地板除10,可将整数个位数上的数字截掉。
代码如下:

for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
        sum += (temp % 10) ** 3
        temp //= 10
    if sum == i:
        print(i,"是水仙数")

这是网上常见的答案,代码量8行。下面看另一种我自己想出来的办法,思路也很容易想到,代码量7行。

思路二:

先把数字转化成字符,拆分得到每个位置上的数字(字符串形式,如下图);后又将字符串转化为数字进行计算即可
在这里插入图片描述
代码如下:

for num in range(100,1000):
    sum = 0
    for i in str(num):
        sum += int(i) ** 3
    if sum == num:
        print(num,"是一个水仙花数")
    num += 1
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐