------------恢复内容开始------------
如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。
一般思路:随机函数生成100~999的三位数,一次做运算,算出各位数字,在做立方相加,跟原数比较,如果相等就输出
再次弹了弹自己的傻瓜脑子,python的运算符过于智能,用/一直没有结果,这里要用地板除向下取个整数即可
for i in range(100,1000): sum = 0 a = i//100 b = (i-a*100)//10 c = i-a*100-b*10 sum = a**3 + b**3 + c**3 if sum == i: print(i)
运行结果:
D:\Python\python.exe D:/Python/test/水仙花数.py
153
370
371
407
如果是(100,10000000)呢,这个本方法就要定义很多个变量,占用空间不说,若范围继续扩大,唉太垃圾了
网上参考答案:
for i in range(100,1000): sum = 0 temp = i while temp: sum = sum +(temp%10) ** 3 temp //= 10 if sum == i: print(i)
i
------------恢复内容结束------------