阿尔伯特·爱因斯坦(1879-1955)是犹太裔物理学家,诺贝尔物理奖获得者,他创立了代表现代科学的相对论,并为核能开发奠定了理论基础,他开创了现代科学技术新纪元,被公认为是继伽利略、牛顿以来最伟大的物理学家。
【问题】
有一次,爱因斯坦给他的朋友出了这样一道有趣的数学题:有一条长长的阶梯,如果每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨6阶,最后剩5阶。只有每步跨7阶时,才正好到头,一阶也不剩。请问这条阶梯至少有多少阶?
请你编写一个Scratch程序求解这个问题。
【编程解题】
我们用一个变量n来表示阶梯数,那么阶梯数n要同时满足以下5个条件:
接下来,我们采用枚举法向你介绍如何求解该问题。
我们使用“重复执行直到……”指令构建一个循环结构,在循环体内让变量n的值不断增加,并判断n的值是否满足上述5个条件。
由于阶梯数是7的整数倍,因此我们调整一下,在循环体内让变量n每次增加7,这样就不需要判断第5个条件了。如果变量n的值同时满足前4个条件,那么我们就求得这个问题的解。
程序比较简单,完整的程序清单如下:
点击绿旗运行程序,得到结果:这条阶梯最少有119阶。
通过上面的程序我们已经求得这个问题的解,但是仍然有改进的空间。
回头再仔细看爱因斯坦阶梯问题,我们发现,阶梯数依次除以2、3、5、6的余数分别是1、2、4、5,能同时满足这四个条件的最小阶梯数是29,而2、3、5、6的最小公倍数是30,也就是说,阶梯数是2、3、5、6的最小公倍数减去1,这样才会出现余数是1、2、4、5的现象。
根据这个发现,建议你修改上述程序,让变量n从29开始,每次递增30。而要判断的条件只有一个,就是判断变量n是否是7的整数倍。
经过改进的程序更为简洁,完整程序如下:
点击绿旗运行程序,得到结果:这条阶梯最少有119阶。
在本文中,我们口算就能求出2、3、5、6的最小公倍数是30,或者用笔算也能很快求出一般数的最小公倍数。但是如果遇到一些大数或很多个数的时候,用口算或笔算就不能很快算出最小公倍数了。
这个时候,我们可以编写程序,借助计算机来帮助我们求最小公倍数。
通过解决爱因斯坦阶梯问题,我们发现数学思维在编程中有着重要的作用,它能使我们的程序更加简洁、更有效率。
— THE END —
觉得不错,请关注
领取 专属20元代金券
Get大咖技术交流圈