鱼C论坛

 找回密码
 立即注册
查看: 1768|回复: 3

[已解决]爱因斯坦阶梯问题小疑问

[复制链接]
发表于 2017-12-20 22:43:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
爱因斯坦阶梯问题的答案中,这个程序是不是默认只有一个数满足条件,假设7到7*101所有数中有多个数满足条件,程序是不是会崩溃?或者只输出最后一个正确答案?
求大神帮助解答

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('在程序限定的范围内找不到答案!')
最佳答案
2017-12-20 22:58:55
其实在范围内总共有三个,不过只会输出第一个。
因为当 if 语句成立后便再也不会执行 else 语句,即 x 再也不会被改变,改变的只有 i ,知道退出while循环。
所以最终打印的 i 就是第一次满足 if 语句时的 x。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-20 22:58:55 | 显示全部楼层    本楼为最佳答案   
其实在范围内总共有三个,不过只会输出第一个。
因为当 if 语句成立后便再也不会执行 else 语句,即 x 再也不会被改变,改变的只有 i ,知道退出while循环。
所以最终打印的 i 就是第一次满足 if 语句时的 x。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-21 01:08:46 | 显示全部楼层
x = 7
i = 1
flag = 0

while i <= 101:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        print('阶梯数是:', x)
        flag+=1
    i += 1
    x+=7
if flag >= 1:
    print('以上是7*101范围内的爱因斯坦阶梯问题答案,共有%d个'% flag)
else:
    print('在程序限定的范围内找不到答案!')
给你修改了下程序,你看合意不?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-21 01:12:27 | 显示全部楼层
在你的if代码块下面加上一条 x = 7*(i + 1) 就OK了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-5 00:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表