Board logo

标题: [问题求助] 欧拉计划501题,大数量级的怎么搞 [打印本页]

作者: 元芳你怎么看    时间: 2016-4-12 15:19     标题: 欧拉计划501题,大数量级的怎么搞

本帖最后由 元芳你怎么看 于 2016-4-12 15:22 编辑
  1. """
  2. 欧拉计划501
  3. 原题链接:https://projecteuler.net/problem=501
  4. """
  5. import math
  6. def Ghost_Euler_501(num):
  7. sumeight = 0
  8. for i in range(1,num+1):
  9. counts = Ghost_Factor1(i)           #len(Ghost_Factor(i))
  10. if counts == 8:
  11. sumeight = sumeight + 1
  12. print("The eight factors of %d is %d" % (num,sumeight))
  13. def Ghost_Factor(n):
  14. factors = []
  15. for i in range(1,n+1):
  16. if n%i == 0:
  17. factors.append(i)
  18. #print(factors)
  19. return(factors)
  20. def Ghost_Factor1(n):
  21. counter = 0
  22. sqrt_n = math.sqrt(n)
  23. for i in range(1,int(sqrt_n)):
  24. if n%i == 0:
  25. counter = counter + 2
  26. if sqrt_n - int(sqrt_n) == 0:
  27. counter = counter + 1
  28. else:
  29. counter = counter + 2
  30. return(counter)
复制代码

作者: 元芳你怎么看    时间: 2016-4-12 15:22

刚开始想着转换成列表的形式,使用len()函数,发现到了10万级的直接懵逼了;后来将求因数的方法改了一下,10万的能搞了,100万的直接又懵逼了。
求大神解答!!!!!!!!!!
作者: codegay    时间: 2016-4-12 15:34

好厉害。~
可是懵逼是什么意思呢?
作者: happy886rr    时间: 2016-4-12 15:39

本帖最后由 happy886rr 于 2016-4-12 15:43 编辑

回复 2# 元芳你怎么看
我才做到39题。天那,你这是要封顶的节奏啊,牛人。501题有中文翻译吗?我英语不好啊!
作者: 元芳你怎么看    时间: 2016-4-12 15:42

本帖最后由 元芳你怎么看 于 2016-4-12 15:44 编辑

回复 3# codegay


    参数是10**5的时候相应时间还可以,算10**6的时候电脑响应不过来了
    电脑懵逼就是响应时间太长了,短时间算不出来,下回改正
作者: 元芳你怎么看    时间: 2016-4-12 15:43

本帖最后由 元芳你怎么看 于 2016-4-12 15:45 编辑

回复 4# happy886rr


    绝对新手,第一次做欧拉的题,倒着做了一个
作者: happy886rr    时间: 2016-4-12 15:48

回复 6# 元芳你怎么看
题目要10的12次方,也就是一万亿,看看有必要更改算法吗?
作者: codegay    时间: 2016-4-12 16:51

回复 4# happy886rr


    pe-cn.github.io/problems/
作者: codegay    时间: 2016-4-12 17:13

欧拉计划的题目一般都是算法题。
可以在算法上优化。
欧拉计划的题目在网上都有很多讨论和公开的代码,可以看看别人的讨论和代码。

我不懂数学和算法,所以呢前面的简单题我已经解不出来了。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2