在Python中检查一个数字是否是彼得森数(Petersonnumber

云课堂学Python 2024-04-11 01:17:51

如果一个数字,每位数字的阶乘之和等于给定数字本身,那么给定的数字称为彼得森数。

例如: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 mathnum = 145sumfact = 0strnum = str(num)lstdigts = list(map(int, strnum))for i in lstdigts: numfact = math.factorial(i) sumfact = sumfact+numfactif 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 = 145if peterson(n): print(n, '是一个彼得森数。')else: print(n, '不是一个彼得森数。')

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

0 阅读:0

云课堂学Python

简介:感谢大家的关注