【趣学Python算法100例】爱因斯坦的数学题

问题描述

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1到n内,有多少个数能满足?

问题分析

根据题意,用变量x表示阶梯数,则阶梯数x应该同时满足以下条件:

  • 若每步跨2阶,则最后剩1阶,即x%2=1。
  • 若每步跨3阶,则最后剩2阶,即x%3=2。
  • 若每步跨5阶,则最后剩4阶,即x%5=4。
  • 若每步跨6阶,则最后剩5阶,即x%6=5。
  • 若每步跨7阶,最后才正好一阶不剩,即x%7=0。

算法设计

该问题要求输入n值,求解出在1-n的范围内存在多少个满足要求的阶梯数。在算法设计中,我们使用while循环,将循环条件设置为True,以允许重复读入多个n值。

对每一次读入的n值,都要判断在1-n的范围内存在的满足要求的阶梯数的个数。判断时可采用for循环,循环变量设为i,由题意:

阶梯数需要满足以下条件:

  1. 能被7整除。
  2. 除以6余5。
  3. 除以5余4。
  4. 除以3余2。

由于这些条件的限制,我们从7开始检查,因为7是满足第一个条件的最小整数。

循环条件为i<n;循环体中则使用问题分析中列出的5个条件来检验每一个i值,能够满足所有5个条件的i值即为所求的阶梯数。

确定程序框架

由上述分析可知,该程序的主体是一个循环结构。

  1. 输入n值。
python 复制代码
while True:
    n = int(input("请输入n值:"))
  1. 找到满足要求的阶梯数。
python 复制代码
for i in range(7, n+1):
    # 判断条件

使用for循环检查每一个i值是否满足判断条件。

程序流程图如下图所示:

完整程序

据上面的分析,编写程序如下:

python 复制代码
def computing_ladder(n):
    # 输入验证
    if not isinstance(n, int) or n < 1:
        raise ValueError("n must be a positive integer")

    print(f"在1-{n}之间的阶梯数为:")
    count = 0
    for i in range(7, n+1):
        # 阶梯数所满足的条件
        if (i % 7 == 0) and (i % 6 == 5) and (i % 5 == 4) and (i % 3 == 2):
            count += 1                              # count记录1~n之间满足条件的阶梯个数
            print(f"{i}")
    print(f"在1-{n}之间,有{count}个数可以满足爱因斯坦对阶梯的要求。")

if __name__=="__main__":
    while True:
        n = int(input("请输入n值:"))
        computing_ladder(n)

运行结果

在vscode下运行程序,结果如下图所示。由输出结果可知,在1~200之间满足条件的阶梯数只有1个,为119;在1~400之间满足条件的阶梯数有2个,为119和329;在1~600之间满足条件的阶梯数有3个,为119、329和539。

相关推荐
深蓝AI10 小时前
Python 3.13 的 Queue.shutdown:异步消费者终于能正常收工了
后端
武子康11 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
武子康12 小时前
MultiNet7 每轮都 clean,ESP32-P4 内存为什么还在掉?
人工智能·后端·agent
超级架构师12 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
陈随易13 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
IT_陈寒14 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
starzy199015 小时前
Scala类和对象:从构造器到样例类的完整指南
开发语言·后端·scala
梦影_15 小时前
MySQL进阶教程(五)—— SQL调优(下)
android·大数据·数据库·后端·sql·mysql·database
考虑考虑15 小时前
mariadb数据库
数据库·后端·mariadb
明月_清风16 小时前
用自然语言操控真机:Google Artemis 移动端 AI Agent 上手与实践
人工智能·后端