相亲数--Python
2021-07-20 23:06
标签:res UNC int time cache bsp nbsp span 包括 想亲数:在遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对相亲数 code: 这个求的是 2~10000 范围的想亲数 然后这里里面其实可以改进,由于一个数可能会多次求真因数,我们就可以浪费空间,将已经求取真因数的数存到字典里,并且将求取的值作为valuse。 我们其实可以导入时间模块,来计算一下这两个算法时间的快慢,程序开始使用 time.time() ,程序结束的时候在使用一次 time.time() ,然后计算差值就可以了 相亲数--Python 标签:res UNC int time cache bsp nbsp span 包括 原文地址:https://www.cnblogs.com/luojianyi/p/9516603.html 1 def sumFunc(n): #这个是求真因数的和,真因数不包括自己
2 a = 1
3 b = n
4 sum = 0
5 while a b:
6 if n % a == 0:
7 sum += (a + b)
8 a += 1
9 b = n / a
10 if a == b and n % a == 0:
11 sum += a
12 return sum - n
13
14 for x in range(2,10000):
15 y = sumFunc(x)
16 if x and x == sumFunc(y):
17 print(x,"",y)
1 cache = {}
2 def sumFunc(n): #这个是求真因数的和,真因数不包括自己
3 res = cache.get(n,0) #如果没有取到这个value的值就返回0
4 if res:
5 return res
6 a = 1
7 b = n
8 sum = 0
9 while a b:
10 if n % a == 0:
11 sum += (a + b)
12 a += 1
13 b = n / a
14 if a == b and n % a == 0:
15 sum += a
16 cache[n] = sum
17 return sum - n
18
19 for x in range(2,10000):
20 y = sumFunc(x)
21 if x and x == sumFunc(y):
22 print(x,"",y)
上一篇:mac上卸载java