首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Prime Sum程序

Python Prime Sum程序
EN

Stack Overflow用户
提问于 2018-06-06 12:06:37
回答 2查看 100关注 0票数 0

我正在尝试使用python来解决Project Euler的问题。

我遇到的问题是将所有小于200万的素数相加。

我的代码:

代码语言:javascript
复制
import math

def isPrime(number):
if number == 2:
    return True
for x in range(2,number):
    if number % x ==0:
        return False
return True

number = 3
ans = 2 
while number<=2000000:
    if(isPrime(number)):
       print(number)
       ans+=number
    number+=2

我认为它正在工作,但是它的处理速度太慢了。有什么方法可以增强它吗?(不使用内存中设置的质数)。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-06-06 12:13:16

代码语言:javascript
复制
def is_prime(number):
  if number == 2:
    return True
  for x in range(2, int(math.sqrt(number)) + 1):
    if number%x == 0:
      return False
  return True

如果你确保不存在除以给定数字的平方根的数字,那么你可以将其标记为素数。在number - 1之前不需要检查。虽然是一个很小的改进,但在您的情况下可能意义重大。

票数 1
EN

Stack Overflow用户

发布于 2018-06-06 12:17:53

运行你的循环直到数字的平方根。这将降低复杂性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50712114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档