APP下载

Python多法巧求“自幂数”

2021-06-28牟晓东

电脑报 2021年14期
关键词:方法

牟晓东

在编程语言的教材中常出现一道求解“水仙花数”的经典问题,即某个三位整数每个数位上数字的三次幂之和等于它本身,比如“153 = 1^3 + 5^3 + 3^3”。其实,水仙花数只是“自幂数”的一种,类似的还有四位数的“四叶玫瑰数”(各数位四次方之和等于本身的数)、五位数的“五角星数”、六位数的“六合数”等。Python语法灵活,可以使用多种方法来完成自幂数的求解,在此略举几种水仙花数的编程方法:

1.“整除”和“求余”数位分解法

在Python中,运算符“//”代表“整除”运算,即求“整商”;而运算符“%”则是进行“求余”,利用这两种运算符可以将一个多位数的各位数字“分解”提取。在判断一个三位数是否为水仙花数时,首先构建循环结构“for i in range(100,1000):”,百位上的数字提取方法是通过“bai_wei = i//100”求“整商”来完成,比如计算“365//100”,结果就是“3”;十位上的数字提取方法是“shi_wei = (i%100)//10”,即先以100为除数进行“求余”,再将这个中间结果除以10求“整商”,比如计算“(365%100)//10”,会先得到余数65,然后计算“65//10”得到6;个位上的数字提取方法是“ge_wei  = i%10”,即除以10求余数,比如“365%10”的结果是5。

循环中的if判断条件是“bai_wei**3 + shi_wei**3 + ge_wei**3 == i:”,即各数位上的数字的三次方之和与该数相等。最后,通过print打印输出变量i的数值,结果得到四个水仙花数:153、370、371和407(如图1)。

2.三层循环嵌套法

因为水仙花数是对一个三位数进行判断,所以直接构建三层循环嵌套来实现从100到999的顺序递增。最外层的“for bai_wei in range(1,10):”控制百位数字循环,注意要从1开始(range()中的起始值和终止值参数为“左闭右开”区间);中间层的十位数字循环是“for shi_wei in range(0,10):”;内部的个位数字循环是“for ge_wei in range(0,10):”,变量my_data是计算存储每个三位数的数值大小,即“bai_wei*100+shi_wei*10+ge_wei”;判断条件与之前相同,最后也是打印输出结果,同样会得到四个水仙花数:153、370、371和407(如图2)。……

登录APP查看全文

猜你喜欢

方法
中医特有的急救方法
高中数学教学改革的方法
化学反应多变幻 “虚拟”方法帮大忙
变快的方法
学习方法
用对方法才能瘦
最有效的简单方法
四大方法 教你不再“坐以待病”!
赚钱方法
捕鱼