想亲数:在遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对相亲数

code:

 def sumFunc(n):   #这个是求真因数的和,真因数不包括自己
a = 1
b = n
sum = 0
while a < b:
if n % a == 0:
sum += (a + b)
a += 1
b = n / a
if a == b and n % a == 0:
sum += a
return sum - n for x in range(2,10000):
y = sumFunc(x)
if x < y and x == sumFunc(y):
print(x,"<-相亲数->",y)

这个求的是 2~10000 范围的想亲数

然后这里里面其实可以改进,由于一个数可能会多次求真因数,我们就可以浪费空间,将已经求取真因数的数存到字典里,并且将求取的值作为valuse。

 cache = {}
def sumFunc(n): #这个是求真因数的和,真因数不包括自己
res = cache.get(n,0) #如果没有取到这个value的值就返回0
if res:
return res
a = 1
b = n
sum = 0
while a < b:
if n % a == 0:
sum += (a + b)
a += 1
b = n / a
if a == b and n % a == 0:
sum += a
cache[n] = sum
return sum - n for x in range(2,10000):
y = sumFunc(x)
if x < y and x == sumFunc(y):
print(x,"<-相亲数->",y)

我们其实可以导入时间模块,来计算一下这两个算法时间的快慢,程序开始使用 time.time()  ,程序结束的时候在使用一次 time.time()  ,然后计算差值就可以了

最新文章

  1. click 事件 arguments.callee 每次点击自动* 2
  2. View、ViewGroup (转)
  3. 12个实用的 Javascript 奇淫技巧
  4. jquery mobile转场时加载js失效(转)
  5. init.d文件夹
  6. JS 实现显示和隐藏div(以百度地图为例)
  7. 除去内容中的HTML代码方法
  8. netty常用使用方式
  9. 计蒜客的一道题dfs
  10. 实现一个简单的订阅与发布模式的代码块,和redux
  11. MySQL 系列
  12. 02_ if_else if 练习
  13. note_The Top Risks of Requirements Engineering
  14. WebApi Owin OAuth
  15. Expressions versus statements in JavaScript
  16. 学习go语言一篇就够了(持续更新)
  17. docker之手动构建新的镜像
  18. [leetcode.com]算法题目 - Gray Code
  19. Linux awk工具简单学习记录
  20. eclipse中可以导入其它工具编写的RobotFramework脚本吗?

热门文章

  1. awk使用实例一则
  2. docker 部署 nginx+php+mysql
  3. Intel&#174; Manager for Lustre* software(一)
  4. March 25 2017 Week 12 Saturday
  5. C 中重载一词中的“重”字读ZHONG4还是CHONG2?
  6. 转一个csdn看到的帖子:而立之年的程序猿失业了 [问题点数:0分,结帖人jinxingfeng_cn]
  7. MySQL学习(四)查询
  8. c++一些总结
  9. Zookeeper watch参照表
  10. ipython notebook开通远程