爱因斯坦的数学题

2022-02-15 01:03
电脑报 2022年5期
关键词:排除法因数阶梯

常言說得好:“天才在左疯子在右,而中间的大部分人,都是普通人。”在这个世界上能够被称为天才的人,是不多的,爱因斯坦就是其中之一。有个谣传是说爱因斯坦数学不好,其实这个不好是相对于当时顶尖数学家说的,爱因斯坦只是兴趣不在于此。今天就和大家分享一道爱因斯坦提出的一道数学题。

有一条长长的阶梯,如果每步跨2台阶,最后剩下1个台阶;如果每步跨3台阶,最后剩下2台阶;如果每步跨5台阶,最后剩下4台阶;如果每步跨6台阶,最后剩下5台阶;如果每步跨7台阶时,最后才正好一台阶都不剩。请问这条阶梯共有多少台阶呢?

根据题目的意思我们可以列举出数学公式:

设:X为总台阶数

X/2=1;X/3=2;X/5=4;X/6=5;X/7=0

分析后你会发现,本题的关键就是计算2、3、5、6的最小公倍数30的问题,阶梯的阶数应该比30的倍数少1,并且还是7的倍数,即30n-1=7m,只需找到合适的n和m即可。

当然以上的分析只是通过数学逻辑的方法解决问题,如果转换成编程该如何编写呢?思路的不同,编写程序的代码的方式也大不相同,就像莎士比亚所说的,“一千个读者,就有一千个哈姆雷特”。我用两种算法来解决这个问题:穷举法和排除法。

穷举法我们之前也讲过不少的例子,比如鸡兔同笼等。设置初始num值为1,通过循环的方式让num的值不断累加,每次累加1,并且在循环中根据条件进行判断,与2的余数是否为1,与3的余数是否为2……一旦有相符合匹配成功的数值就将其添加入列表中。穷举法有一定的局限性,效率较低,计算量比较大。

除了穷举法我们还可以使用排除法,在编程前,我们通过简单的梳理已经了解台阶数是7的倍数,创建一个列表将7的倍数依次添加入此列表中,这里我加入了150个7的倍数。

设定一个因数为2,通过循环每次将因数的值加1,当因数值为4时,强制再加1,修改成5,这样下一个因数就是6了。通过循环嵌套的方式将列表中每一项的值依次除以因数(2、3、5、6)得出余数,判断余数是否符合条件,若条件不成立删除列表中对应的项,程序运行结束后便得到正确的数值。

不同的思路与方法所编程的代码也是大不相同,我认为学习编程,重要的不是如何写出华丽的代码,而是要学会思考,通过模块化设计做到如何能够更省力、更快捷地完成程序,提高运行效率。

猜你喜欢
排除法因数阶梯
哥德巴赫猜想的终极证明
常识:斜坡与阶梯
《因数和倍数》教学设计
“倍数和因数”教学设计及反思
一道物理选择题给我们的启示
动摩擦因数的测定
云计算中虚拟机放置多目标优化
刍议“排除法”在高中化学选择题中的应用
爬阶梯
艺术创意阶梯