在 Python 中检查一个数字是否是彼得森数(Peterson number)¶
如果一个数字,每位数字的阶乘之和等于给定数字本身,那么给定的数字称为彼得森数。
例如:N = 145
145 = 5! + 4! + 1!
= 120 + 24 +1
= 145
145 是一个彼得森数。
方法1:¶
算法:
使用 import 导入 math 模块。
将待检测数字存储在变量 sum。
定义变量 sumfact 并将其初始化为 0,用于存储阶乘之和。
使用 str() 函数将给定的数字 num 转换为字符串。
使用 list()、map()、split() 函数将给定的数字转换为数字列表。
使用 for 循环遍历此数字列表。
使用 math.factorial() 函数计算列表元素的阶乘。
将此阶乘值累加到 sumfact。
使用 If 条件语句检查 sumfact == sum。
如果语句为 True,则输出给定的数字是是一个彼得森数。
否则,输出给定的数字不是一个彼得森数。
import math
num = 145
sumfact = 0
strnum = str(num)
lstdigts = list(map(int, strnum))
for i in lstdigts:
numfact = math.factorial(i)
sumfact = sumfact+numfact
if sumfact == num:
print(num, '是一个彼得森数。')
else:
print(num, '不是一个彼得森数。')
方法2:¶
算法:
将 0~9 的阶乘存储到列表,提取给定数字的每位数字并从列表找到它的阶乘并求和。
自定义列表 fact,存储 0~9 的阶乘。
自定义函数 peterson(n)。
使用 while 循环。
使用取余运算获取最后一位数字。
从列表获取阶乘并累加求和。
使用整除运算去掉最后一位数字。
循环执行,得到阶乘之和。
自定义函数 peterson(n) 返回 sumnum == num 结果。
将待检测数字存储在变量 n。
使用 If 条件语句检查 peterson(n) 的结果。
如果语句为 True,则输出给定的数字是是一个彼得森数。
否则,输出给定的数字不是一个彼得森数。
fact = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
def peterson(n):
num = n
sumnum = 0
while n > 0:
m = n % 10
sumnum += fact[m]
n = n // 10
return sumnum == num
n = 145
if peterson(n):
print(n, '是一个彼得森数。')
else:
print(n, '不是一个彼得森数。')
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。