完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数。
第一版:
import datetime
start = datetime.datetime.now()# 计时
perfect_number =[]for i inrange(2,10001):
factor_sum =0for j inrange(1,int(i/2)+1):# 因为因数成对出现if i % j ==0:
factor_sum.append(j)if factor_sum == i:
perfect_number.append(factor_sum)print(perfect_number)
end = datetime.datetime.now()# 计时print(f"程序运行了{end - start}秒")
结果:
[6, 28, 496, 8128]
程序运行了0:00:03.323997秒
第二版(看看里面到底有哪些真因数):
# 找出10000以内的完美数import datetime
start = datetime.datetime.now()# 计时
perfect_number =[]for i inrange(2,10001):
factor_sum =[]for j inrange(1,int(i/2)+1):if i % j ==0:
factor_sum.append(j)ifsum(factor_sum)== i:print(f"{i}:{factor_sum}")
perfect_number.append(factor_sum)print(perfect_number)
end = datetime.datetime.now()# 计时print(f"程序运行了{end - start}秒")
结果:
6:[1, 2, 3]
28:[1, 2, 4, 7, 14]
496:[1, 2, 4, 8, 16, 31, 62, 124, 248]
8128:[1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064]
[[1, 2, 3], [1, 2, 4, 7, 14], [1, 2, 4, 8, 16, 31, 62, 124, 248], [1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064]]
程序运行了0:00:03.617384秒
版权归原作者 务虚心斋 所有, 如有侵权,请联系我们删除。