爱因斯坦大长腿的问题
课后作业有个这个题:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
(爱因斯坦的腿肯定很长,竟然一步可以上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 不是变量,会不会只打印出第一个满足要求的数? (爱因斯坦的腿肯定很长,竟然一步可以上7个台阶~~)奇怪的关注点 是的,只会打印第一个满足要求的数。 本帖最后由 sunrise085 于 2020-5-11 17:00 编辑
这个写法的确只找一个,在该范围内有三个
下面程序能都打印出来
x = 7
flag = 0
for i in range(1,100):
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag=1
print('阶梯数是:', x)
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
if flag == 0:
print('在程序限定的范围内找不到答案!') 程序问题挺多,这里提供了改进代码,仅供参考x = 7
i = 1
flag = 0
L=[]
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
L.append(x)
x = 7 * (i+1)
flag = 1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i += 1
if flag == 1:
print('阶梯数是:', L)
else:
print('在程序限定的范围内找不到答案!') ouyunfu 发表于 2020-5-11 17:07
程序问题挺多,这里提供了改进代码,仅供参考
其实,你的答案也很好的,并且你最后以列表的形式输出结果,比4楼的答案更美观。 但是我觉得四楼能跳出原程序,用for 语句,从而使程序长度减少,做的很漂亮。也不知道我的观点对不对。
非常感谢你的解答。
页:
[1]