一道看似简单实则困难的数学题的Scratch编程解法

yumo6665个月前 (06-17)技术文章22

一道看似简单实则困难的数学题的Scratch编程解法

题目是这样的:将一个正整数的个位放到首位,变成原来的2倍,求满足条件的最小正整数。

题目的意思很简单,小学生都能读懂,比如原数为357,将个位7放到首位,就变成735。很显然,735并不等于357的2倍(714),所以357不符合要求。我们容易验证所有的一位数和二位数都不符合要求。怎么求呢?

(一)算法分析

难点在于我们不确定它是几位数,难道只能从3位数开始,从小到大逐一穷举验证?那工作量可就太大了!要解决这个难题,运用数学知识(算法)筛选,缩小范围,就显得尤其重要。

我们先从验证二位数开始,看符合条件的数具有什么特殊性。

假如这个数是两位数X=ab,即个位是b,十位是a(X=10a+b),要满足题目条件,则有ba=2ab,即10b+a=2(10a+b),进而19a=8b,这里a和b都是非0的一位数,很显然无论b是1,2,…,9中的哪一个,8b都不是19的倍数,所以满足条件的a,b不存在。

将上述比较方法推广到n位数,这里n≥3。假设这个数为:



(二)编程实现

1.首先建立一个计算方幂的子程序:

2.建立一个找出最小n值得子程序:

3.根据找出的最小n值,求出Y值,建立将b从小到大验证符合条件的最小数。

由于Scratch内置的计算程序的精度有限,我们使用了自定义的大数乘法子程序和字符串处理,大数乘法子积木很繁杂,不展示直接用。

3.结果显示:

相关文章

Scratch2.0接苹果小游戏讲义整理

Scratch2.0接苹果小游戏概貌见动图:这又是一款经典的Scratch小游戏,是孩子们学习Scratch编程软件的良好载体,不容错过。(一)玩法说明接到慢速的红苹果一个加1分;接到中速的红苹果一个...

打地鼠小游戏制作教程

打地鼠这个小游戏貌似比我的年龄都要大,这次我们使用scratch3.0图形化编程软件来制作一款我们自己的“打地鼠”。 我们先准备4样角色,分别是:地鼠角色、锤子角色、地洞角色、草地角色。 地鼠→使用猫...

你能用scratch制作小游戏吗?酷酷来教你!

运用scratch我做了一个跳一跳小游戏,首先我要确定游戏流程,小恐龙跑向障碍物,玩家用键盘的空格键控制恐龙跳跃如果恐龙跳过障碍物则游戏分数加一如果恐龙接触到障碍物则游戏结束,脚本全部停止先添加一个森...