发布网友
共1个回答
热心网友
4.N以内的完全数
import time
def perfect2(N):
"""完全数都是以6或8结尾,如果以8结尾,那么就肯定是以28结尾."""
#N=10000,0.016secs,N=100000,0.313secs; N=1000000,9.922secs;N=1000万,324.656secs
start = time.time()
perfectNumber=[]
for i in range(6, N, 10):
sum1 = 1
for j in range(2, int(i**0.5)+1):
if i%j == 0:
sum1 += j
sum1 = sum1 + i//j
if sum1 == i:
perfectNumber.append(i)
for i in range(28, N, 100):
sum1 = 1
for j in range(2, int(i**0.5)+1):
if i%j == 0:
sum1 += j
sum1 = sum1 + i//j
if sum1 == i:
perfectNumber.append(i)
print("run time:", str(time.time()-start), "seconds.")
return perfectNumber