关于水仙花数求法
def hua():x = 1
y = 1
z = 1
for x in range(1,10):
for y in range(1,10):
for z in range(1,10):
s = 100*x + 10*y + z
if s == x**3 + y**3 + z**3:
print(s)
else:
break
自己摸索的算法,只能得到371这个结果。求教各位前辈指点一二 本帖最后由 lubcat 于 2017-2-14 17:10 编辑
之后推敲了下,x,y,z所在数位可能一共有6种情况,
但添加全部情况之后,打印的内容杂乱,其中包含有水仙花数。
s = 100*x + 10*y +z
s = 100*x + 10*z +y
s = 100*y + 10*x +z
s = 100*y + 10*z +x
s = 100*z + 10*x +y
s = 100*z + 10*y +x
这种算法是否可行? for x in range(1,10):
for y in range(1,10):
for z in range(1,10):
s = 100*x + 10*y + z
if s == x**3 + y**3 + z**3:
print(s)
153
371
问题出在最后的else:break上,这里加else好像无意义。 小兔兔娃 发表于 2017-2-14 19:00
for x in range(1,10):
for y in range(1,10):
for z in range(1,10):
水仙花数不是有4个嘛,剩下的整不出来了…… 编程新血 发表于 2017-2-14 19:30
问题出在最后的else:break上,这里加else好像无意义。
好像也是,for循环结束 程序就结束了。 lubcat 发表于 2017-2-14 19:36
水仙花数不是有4个嘛,剩下的整不出来了……
明白了,我们没考虑0的情况,只说了百位不是0没说个位和十位啊,所以只要把y和z的初始值设为0就行了 假设x与y分别为1时,那么你的数是从111开始的,这样的话,过程中会不会有所缺漏呢? 五行缺五行 发表于 2017-2-15 08:29
假设x与y分别为1时,那么你的数是从111开始的,这样的话,过程中会不会有所缺漏呢?
也就是y,z初始值要从0开始? tianalng233 发表于 2017-2-15 02:10
明白了,我们没考虑0的情况,只说了百位不是0没说个位和十位啊,所以只要把y和z的初始值设为0就行了
试了试,果然是y,z取值范围小了{:10_298:} 我这个答案如何?请学友们评价一下~(得出的答案和老师的一样)
for x in range(1,10):
for y in range(0,10):
for z in range(0,10):
for i in range(100,1000):
if i == x**3+y**3+z**3 == x*100+y*10+z:
print(i)
页:
[1]