展开全部
import datetime
from math import sqrt
def prime_number(m):
L = [2, 3]
for n in range(2, m):
for i in range(2, int(sqrt(n))+1):
if n % i == 0:
break
if int(sqrt(n)) == i:
L.append(n)
return L
def perfect_number(x):
List = []
for n in prime_number(x):
if (pow(2, n)-1)*pow(2, n-1) > x:
break
if pow(2, n)-1 in prime_number(x):
List.append((pow(2, n)-1)*pow(2, n-1))
return List
start = datetime.datetime.now()
print(perfect_number(10000))
end = datetime.datetime.now()
print(end - start)
[6, 28, 496, 8128]
获取10000以内的完全数62616964757a686964616fe78988e69d8331333433636132用时0.194480秒学电脑到~新华电脑学院