【编程学习】如何用Scratch或Python判断阿姆斯特朗数

2020年8月12日 10 : 43

在我们数学王国中,存在着很多有别称的数字,今天我们来认识一位新朋友"阿姆斯特朗数"。阿姆斯特朗数是数学中的一个概念,多用于计算机语言中,如果一个n位正整数等于其各位数字的n次方之和则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。

已知1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。

那么大家肯定会想,我们是如何来判断阿姆斯特朗数呢?判断的方法和依据又是什么呢?我们用Scratch来编写一下判断程序,输入一个三位数判断是否是阿姆斯特朗数。

由于仅仅只对三位数判断,难度不高,先判断输入是数字是否为三位数,如果不是停止所有脚本。

如果是三位数的话继续判断,判断方法有两种供你参考:

1.用到提取字符积木。从回答的结果中直接依次提取字符出来,个位是"'回答'的第1个字符",十位提取第二个,百位提取第三个;这里我们首次用到了运算中的"…的第…个字符"积木。

2.运算法。假设输入数为456,提取百位数字的方法就是456整除100,结果为4(需要向下取整);提取个位的方法是456除以10的余数,结果为6;要提取十位数字需要动脑筋思考一下,要结合整除和取余数两个方法,首先向下取整456除10,结果为45,然后取除以10的余数得到5,就是十位的结果,数学运算的方法比较巧妙。

两种方法均可选择。

然后进行阿姆斯特朗数的判断,个位的三次方+十位的三次方+百位的三次方之和是否等于该数字本身。

Scratch代码通俗易懂,下面进行一次小小的提升尝试,用Python来编写,输入一个数字(不考虑数字的位数)来进行判断是否是阿姆斯特朗数。

这里我们用到while循环,当while=0时结束循环,提取的方法是刚才用到的运算法,从个位开始每次取除10的余数,提取出最后一位数字,然后依次往前高位提取,不要忘记每次的循环的结束前除以10并向下取整,否则每次提取的数字都是一样的,循环结束后,进行比较判断是否为阿姆斯特朗数,代码如下:

本题的关键就是把输入数字作为字符串用提取法处理,还是当做数字用整除取余数的运算法处理。

本版源代码下载

链接:https://pan.baidu.com/s/1_Wm3Dz4PaDuW2dVEJkT-EA

提取码:23iw



分享到: