Python实现寻找完美数,由于Python底层运算直接用C或C+++实现所以比Java运算快一些(其实是最快的算法)啊ヾ(≧▽≦*)oヾ(≧▽≦*)o
梅森运算法:当p为素数且梅森数2^p-1为素数时2^(p-1)*(2^p-1)为完全数
附带计时⏲模块(datetime)会打印运行时间,完美数的位数。
运行时间较长,30秒到1分钟不等,不是没有结果哦!最后会打印运行时间。
结果非常长第20个2663位数,别被吓到了!
想要求得更大的完美数,改动for i in range(2, 5000)中range的第二个参数
参考源码:
# Python实现,由于Python底层运算直接用C或C+++实现所以比Java运算快一些
import datetime
def isPrime(N):
if N < 4: return N > 1
if ((N & 1) == 0): return False
i = 3
while i * i <= N :
if (N % i) == 0 : return False
i += 2
return True
def primality(N, M):
if N