找到大量n的第n个素数

时间:2017-07-13 00:19:43

标签: python primes

我一直在非常缓慢地处理项目euler。我遇到问题7,可以在这里看到:https://projecteuler.net/problem=7

基本上你应该找到第10,001个素数。我创建了一个输出输入因子列表的函数:

def factor(number):
factors = []
for i in range(1, number + 1):
    if i == number:
        factors.append(i)
    elif number % i == 0:
        factors.append(i)
return factors

然后利用len()函数找到素数:

def prime(number):
primes = []
for i in range(1, number + 1):
    if len(factor(i)) == 2:
        primes.append(i)
print("There are {} primes below {}.".format(len(primes), number))

现在我对此进行了修改以解决手头的问题。

def primes(num):
primes = []
a = 0
while len(primes) < num:
    a = a + 1
    if len(factor(a)) == 2:
        primes.append(a)
print(len(primes))
print(primes[-1])

现在它有效,但可能需要10多分钟才能运行。我知道这是因为它正在运行一个荒谬的数字,我想我要问的是什么是一种创造性的方法来避免为函数排序创建大量标准?没有找到明确的答案,只是试图看到实际的编码员的思维过程。

0 个答案:

没有答案