首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Euler项目#7 - Python

Euler项目#7 - Python
EN

Stack Overflow用户
提问于 2014-01-23 23:52:51
回答 6查看 613关注 0票数 1

所以我想找出第10001个素数#。这是我的密码-

代码语言:javascript
复制
counter = 3
primes = [1]

while len(primes) < 10002:
    for i in range(2, counter):
        if counter % i == 0:
            counter += 1
    else:
        primes.append(counter)
        counter += 1

print counter

作为素数的输出,我得到的是一个数列,前几个数是1,3,5,7,11.到目前为止,还不错..。13,17,19,23,27等等,27?因此,在这一点上,它崩溃,并开始返回,主要是素数,但不是所有素数。这需要永远的时间。

我刚开始编程,通过CodeAcademy的Python课程,现在我试着找出如何克服语法入门的问题。我不是来自数学背景,所以我知道质数是什么,我知道有更好的方法来解决这个问题。如果在类似的船上有谁想“合作”,一起学习Py2.7,我非常乐意。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-01-24 00:03:01

我不会为您实现任何东西,因为这就是您要执行Project的原因,但我将向您指出The Sieve of Eratosthenes的方向。它将在几秒钟内计算出您的代码将在几小时内完成的操作。

它的工作原理是:(伪码)

代码语言:javascript
复制
for known_prime in a huge list of numbers:
    k=2
    while known_prime*k < the biggest number:
        known_prime*k is not prime
        k += 1

一旦通过了列表中的sqrt,就可以找到列表中的每个素数。

票数 5
EN

Stack Overflow用户

发布于 2014-01-24 00:23:33

因为您正在做Euler项目,所以您显然需要对代码进行注释,而不是解决方案。

你的代码:

代码语言:javascript
复制
counter = 3
primes = [1]

while len(primes) < 10002:
    for i in range(2, counter):
        if counter % i == 0:
            counter += 1
    else: # Mis-aligned else (assuming it's intended for the if)
        primes.append(counter)
        counter += 1

print counter
  1. 您的elseif错误地对齐。
  2. 您的for循环一直到counter,并且测试自身的可分性必然会找到余数0。
  3. 您的else子句对于counter的每个非因素都会命中.大多数数字都不是一个因素,所以你不想在这种情况下采取行动。相反,当if部件触发时,就会中断循环。
  4. 退出for循环后,您将需要检查是否找到了一个因素,如果没有,则将counter添加到素数列表中。

看起来你正在尝试实现一个天真的,未经优化的蛮力搜索,这很好。

在对算法进行编码之前,可以尝试用文字或伪代码写出算法。

票数 0
EN

Stack Overflow用户

发布于 2014-01-24 00:27:20

作为一项练习,我将为您编写一段简单的代码,而不是一步一步地编写一段复杂的代码,并给出类似问题的解决方案。

作为理解python的一个练习,尝试在这一行中找出发生了什么。这段代码将找到素数,直到n个数,而不是你想要的第一个n个素数。

代码语言:javascript
复制
def primes(n):
   return sorted(set(range(2, n+1)) - set([p*i for p in range(2, n+1) for i in range(p, n+1)]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21321779

复制
相关文章

相似问题

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