新人发帖,求大佬们指教,拜谢!
题目:求100-999之间所有的水仙花数,水仙花数是指百位的3次方 + 十位的3次方 + 个位的三次方等于原数的整数。比如153。
我做了几种解法,哪种思路和运行效率是最好的呢?
1. 拆分百位十位个位,直接做运算
for i in range(100, 1000):
str1 = str(i)
if(int(str1[0])**3 + int(str1[1])**3 + int(str1[2])**3) == i:
print("%d是水仙数" % i)
2. 算出百位个位十位,然后用while循环:
i = 100
while i <= 999:
a = i // 100
b = (i - a*100) // 10
c = i % 10
if (a**3 + b**3 + c**3) == i:
print(i)
i += 1
else:
i += 1
3. 小甲鱼的标准答案
1. for i in range(100, 1000): 2. sum = 0 3. temp = i 4. while temp: 5. sum = sum +(temp%10) ** 3 6. temp //= 10 # 注意这里要使用地板除哦~ 7. if sum == i: 8. print(i)
|