欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 【python】生成完全数

【python】生成完全数

2024/10/25 17:16:48 来源:https://blog.csdn.net/qq_18296979/article/details/140200718  浏览:    关键词:【python】生成完全数

定义

如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2]。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。

例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

python代码

生成10000以内的完全数

for i in range(1, 10000):s = 0for j in range(1, i):if i % j == 0:s += jif s == i:print(i)
6
28
496
8128

梅森素数

古希腊数学家欧几里得在名著《几何原本》中证明了素数有无穷多个,并论述完全数时提出:如果2^P-1是素数(其中指数P也是素数),则2^(P-1)(2^P-1)是完全数。瑞士数学家和物理学家欧拉证明所有的偶完全数都有这种形式。因此,人们只要找到2P-1型素数,就可以发现偶完全数了。数学界将2P-1型素数称为“梅森素数”(Mersenne prime),因为法国数学家和法兰西科学院奠基人梅森在这方面的研究成果较为卓著。梅森素数貌似简单,但探究难度却极大。它不仅需要高深的理论和纯熟的技巧,而且还需要进行艰巨的计算。到2018年为止,人类仅发现51个梅森素数。

def is_prime(n):if n <= 1:return Falseif n <= 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsei = 5while i * i <= n:if n % i == 0 or n % (i + 2) == 0:return Falsei += 6return Truemersenne_primes = []
for p in range(2, 14):  # 2^14 - 1 > 10000, so we stop at 13mersenne_candidate = 2**p - 1if is_prime(mersenne_candidate):mersenne_primes.append(mersenne_candidate)mersenne_primes
执行上述Python代码后得到的10000以内的梅森素数列表是:[3,7,31,127,8191]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com