马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ouwen116 于 2017-7-20 12:27 编辑
编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。for i in range(100, 1000): #看得懂
sum = 0 #看得懂
temp = i #看得懂
while temp: #看得懂
sum = sum + (temp%10) ** 3 #看不懂,彻底蒙B了,搞不懂
temp //= 10 #temp = temp//10,地板除看得懂
if sum == i: #为什么sum == i,就好了呢? (sum = sum + (temp%10) ** 3)这里面
#(temp % 10) ** 3#(这是个位数的立方,我看懂了#但+sum就OK了真心看不懂
print(i)
自己写的代码,各位鱼友看看有没有什么问题:for i in range(100,1000):
temp = i
temp1 = (temp%10)**3 #求i的个位数
temp2 = (temp//10//10)**3 #求i的百位数
temp3 = (temp//10%10)**3 #求i的十位数
if temp == temp1 + temp2 + temp3:
print(i)
1,第一次循环
sum = sum + (temp%10) ** 3 意思就是取temp的个位数的立方
temp //= 10 意思是除以10,整除去掉余数(例如:283//10=28)
2,第二次循环
sum=sum+(temp%10)**3 这时temp已经变成了两位数,现在除10取余数就相当于原数据的十位,而sum=个位的立方(sum)+原数据十位的立方
|