△ 亲和数:
1 又叫朋友数,相亲数。
2 是由毕达哥拉斯,在大约公元前580年左右提出的。
3 又叫:micable number。
△ 操作效果:
一般花费时间在34~44秒之间
△ 100对亲和数:
△ 特殊3对亲和数:
第1对:220和284
是人类最早发现的,又是最小的一对亲和数。
第2对:17296和18416
1636年,法国"业余数学家之王"费马(一个不务正业的律师)找到第二对,位列第8位。
第3对:9363584和9437056
"解析几何之父"--法国数学家笛卡尔于1638年3月31日也宣布找到了第三对,位列第100位。
△ 代码:
1 基本代码:
def micablenumber(n):
since = time.time()
#用mSum记录真因子的和,初始化置为1
mSum = [1]*(n 1)
for i in range(2,int(n/2 1)):
j = 2 * i
while j <= n:
mSum[j] = i
j = i
micable_n = [(i, mSum[i]) for i in range(220, int(n 1))
if mSum[i] > i and mSum[i] <= n and i == mSum[mSum[i]]]
print(micable_n)
print('总共有:%s对亲和数'%len(micable_n))
if __name__ == '__main__':
n=int(input('请输入在多大范围内查询,推荐1000万:'))
micablenumber(n)
2 加入时间计算耗时的代码:
import time
def micablenumber(n):
since = time.time()
#用mSum记录真因子的和,初始化置为1
mSum = [1]*(n 1)
for i in range(2,int(n/2 1)):
j = 2 * i
while j <= n:
mSum[j] = i
j = i
micable_n = [(i, mSum[i]) for i in range(220, int(n 1))
if mSum[i] > i and mSum[i] <= n and i == mSum[mSum[i]]]
print(micable_n)
print('总共有:%s对亲和数'%len(micable_n))
time_elapsed = time.time() - since
print('总共花费时间: {:.0f}m {:.0f}s'.format(
time_elapsed // 60, time_elapsed % 60))
if __name__ == '__main__':
n=int(input('请输入在多大范围内查询,推荐1000万:'))
micablenumber(n)
笛卡尔:世界著名的法国哲学家、数学家、物理学家(1596年3月31日-1650年2月11日)
,