九歌独吟 发表于 2020-4-12 15:31:45

第二版第11讲的课后作业有一点不懂

本帖最后由 九歌独吟 于 2020-4-12 15:51 编辑

. 爱因斯坦曾出过这样一道有趣的数学题:

    有一个长阶梯,若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。

我是这样写的

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 = steps * (i + 1)
    i = i + 1

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


为什么我这样写会返回找不到答案,而把其中一句改成
steps = 7 *(i + 1)

就可以计算出结果?




我想通了,我写的steps会按7,14,42,168,840这样递增

sunrise085 发表于 2020-4-12 15:48:15

应该是每次循环step+7,
你写的steps = steps * (i + 1) 每次循环step都是几何级的增长啊
第一次step=7 ,第二次step=7*2=14, 第三次循环 step=14*3=42, 第四次循环 step=42*4=168……

永恒的蓝色梦想 发表于 2020-4-12 15:35:06

step太大了
页: [1]
查看完整版本: 第二版第11讲的课后作业有一点不懂