0


找10000以内的完美数(python)

完全数(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秒

标签: python

本文转载自: https://blog.csdn.net/qq_45134915/article/details/115750568
版权归原作者 务虚心斋 所有, 如有侵权,请联系我们删除。

“找10000以内的完美数(python)”的评论:

还没有评论