小猴猴 发表于 2020-4-14 12:15:15

第六讲 爱因斯坦课后题求解答

原题:
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)
小甲鱼的答案:
x = 7
i = 1
flag = 0

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = 1
    else:
      x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1

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

请问大神们,为啥flag=1的时候就跳出循环了,不应该是i>100才跳出循环吗

Hoiste 发表于 2020-4-14 12:18:30

看错了吧,flag = 1没有跳出循环啊

qiuyouzhi 发表于 2020-4-14 12:26:56

flag=1并不是跳出循环的条件,
符合flag之后会继续循环,但是
x就不会改变了,你可以在后面
加一个break,省掉没有意义的循环。

小猴猴 发表于 2020-4-14 12:42:40

qiuyouzhi 发表于 2020-4-14 12:26
flag=1并不是跳出循环的条件,
符合flag之后会继续循环,但是
x就不会改变了,你可以在后面


谢谢!这下想明白了
页: [1]
查看完整版本: 第六讲 爱因斯坦课后题求解答