APP下载

用Python分析自幂数

2022-04-06王威王德贵

电脑报 2022年12期
关键词:四位数位数三位数

王威 王德贵

一个三位“自幂数”就是这个三位数的每个数字的立方和与其本身相等,这样的三位数也叫“水仙花数”;如果一个四位数的每一位的四次方和与其本身相等,这样的四位数叫“玫瑰花数”;符合同样规则的五位数叫“五角星数”;当位数大于五位时,符合一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为“自幂数”。两位数没有自幂数。

前几期文章,我们了解了数学黑洞,今天我们继续用Python来分析和研究一类新的数学黑洞——自幂数。

前面几篇数学黑洞问题,在研究时真的感到很有意思,还有些奇妙,这就更增添了学习的兴趣。自幂数和“6174”等数学黑洞的规则不同,算法思路也就会有一些差异。

通过输入一个数字,根据位数进行枚举计算,输出满足条件的数。

程序是将数值转换为字符串,然后依次取出每个数字字符,进行幂运算,如果计算结果与本身相等,则满足条件,输出。

比如输入一个三位数,取出每个数字字符计算立方和,如果和本身相等,即是满足条件的数值。

如果位数多了,其幂次用字符串长度表示即可。即位数是利用10的幂次表示,比如10**2,即10的平方为100,是三位数。

程序涉及的是中国电子学会编程等级考试二级的内容:for/range()。

我们不久前才介绍了while循环,在条件为True时,while循环会继续循环。但如果你想让一个代码块执行固定的次数该怎么办呢?答案是:可以通过for循环语句和range()函数来实现。

range()函数可以只设置终止值,range(stop),也可以设置三个参数range(start,stop[,step])。

start为开始值,开始值作为开始的那个数,不输入的话默认从0开始。

stop为结束值,结束值所代表的不是结束的那个值,而是结束的那个下标,结束值的下标是从0开始算起。例如你输入5,那么输出之后就是4。也就是我们说的左闭右开,结束值不可省略。

step为步进值,步进值代表一次你想要步进多少个,假如输入1的话,那输出之后就可以看到每一个数据之间相隔了1的差距,如果步进值省略的话,它的默认值依旧是1,只有当你自己输入其他的步进值,它才会改变。

程序如图1:

运行结果发现,水仙花数只有4个:153、370、371、407(图2)。

程序如图3:

运行结果发现,玫瑰花数只有3个:1634、8208、9474(图4)。

程序如图5:

运行结果发现,五角星数只有3个:54748、92727、93084(图6)。

程序如图7:

运行结果发现,6位数的自幂数为:548834(图8)。

可以看到继续使用这种方式,在更高位时输入容易出错,所以我改用10的幂次,设定位数。程序修改如下(图9)。

由运算结果看,6位自幂数只有1个,而7位自幂数有4个。这也证明我们的程序可以用来验证任意给定范围内的自幂数了(图10)。

通过验证,大家对自幂数有了进一步的理解,我们也做出了较为通用的程序,大家还可以继续优化程序,或是其他方法实现。根据这个算法也可以利用图形化编程实现,有兴趣的读者可以自行研究,本文不再贅述。

本文也是我自己的研究过程和心得,有不妥之处,请各位老师和同学斧正!

猜你喜欢

四位数位数三位数
云朵装礼物——三位数
东东“闯关”记
暑假训练营·两位数乘两位数和小数的初步认识
《两位数除以一位数笔算除法》教学设计
三位数密码
比大小有窍门
小花鹿写数
叶丽娅的年龄
二年级万以内数的遮法和写法单元自测题
有趣的四位数