来包利子 发表于 2020-8-16 16:24:53

有关 爱因斯坦的数学谜题 的疑惑

本帖最后由 来包利子 于 2020-8-16 16:27 编辑

问题来源:传送门,其中的动动手问题。

steps = 7
steps = int(steps)
i = 1
FIND = False

while i < 100:
    if (steps %2 ==1) and (steps %3 == 2) and (steps %5 == 4) and (steps %6 == 5) and (steps%7 == 0):
      FIND = True
      break
    else:
      steps = steps * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')


steps = 7
i = 1
FIND = False

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
      FIND = True
      break
    else:
      steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

上面是我自己填出来的代码,下面是小甲鱼老师的参考答案。

我自己的无法得到结果,我认为问题就在steps = 7 * (i + 1)这里。
程序第一次循环时,steps的值就是7啊,应该等效才对啊。
而且我怕steps的7不是int格式,还专门加了一行steps = int(steps),为什么还是无法得到结果呢?

小甲鱼的铁粉 发表于 2020-8-16 16:33:23

steps的第一个值确实是7,但是你想哈,执行过一次steps = steps * (i + 1)之后,第二次执行它的话,steps就不是7了,也就是说第二次steps = steps * (i + 1),乘的steps不是7

来包利子 发表于 2020-8-16 16:48:01

小甲鱼的铁粉 发表于 2020-8-16 16:33
steps的第一个值确实是7,但是你想哈,执行过一次steps = steps * (i + 1)之后,第二次执行它的话,steps就 ...

哦哦,第一遍是7*2,然后到了第二遍就成了14*3了,再往后就全乱了。懂了,感谢大神!

小甲鱼的铁粉 发表于 2020-8-16 16:51:55

来包利子 发表于 2020-8-16 16:48
哦哦,第一遍是7*2,然后到了第二遍就成了14*3了,再往后就全乱了。懂了,感谢大神!

不敢不敢,我很菜的{:10_278:}
页: [1]
查看完整版本: 有关 爱因斯坦的数学谜题 的疑惑