相亲数--Python
Posted 清浅...忆回
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相亲数--Python相关的知识,希望对你有一定的参考价值。
想亲数:在遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对相亲数
code:
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 < y and x == sumFunc(y): 17 print(x,"<-相亲数->",y)
这个求的是 2~10000 范围的想亲数
然后这里里面其实可以改进,由于一个数可能会多次求真因数,我们就可以浪费空间,将已经求取真因数的数存到字典里,并且将求取的值作为valuse。
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 < y and x == sumFunc(y): 22 print(x,"<-相亲数->",y)
我们其实可以导入时间模块,来计算一下这两个算法时间的快慢,程序开始使用 time.time() ,程序结束的时候在使用一次 time.time() ,然后计算差值就可以了
以上是关于相亲数--Python的主要内容,如果未能解决你的问题,请参考以下文章
过年不再被逼相亲——我用python给亲戚展示2022的相亲数据
用Python爬取了几千条相亲文案,终于发现了告别单身的秘密
Python爬取千条相亲数据,看看单身率90%的中国男女都在挑剔什么