水仙花数是指一个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