素数算法在某一点后停止工作

时间:2016-01-31 15:44:32

标签: python algorithm sieve

这是我的素数查找算法 - 它的效果很好(而且非常快),直到限制设置在173以上,然后开始投掷

ValueError: list.remove(x): x not in list

我不明白为什么在极限值达到174或以上时它才能正常工作 - 这是我的代码。

def primefinder(limit):
    primes = [2, 3]
    for i in range(1, (limit / 6 + 1)):
        primes.append(6 * i - 1)
        primes.append(6 * i + 1)

    for i in primes[:]:
        if i > 24:
            for x in primes:
                if x <= i ** 0.5:
                    if i % x == 0:
                        primes.remove(i)
                        continue
                else:
                    break

    if limit % 6 == 0:
        primes.remove(primes[-1])
    return primes

1 个答案:

答案 0 :(得分:0)

这里你走了 - 你不想在那里打印,那只是为了表明发生了什么。

def primefinder(limit):
    primes = [2, 3]
    for i in range(4, limit):
        if (prime(i)):
            primes.append(i)
            print (i)

    return primes

def prime(number):
    oldnum = number
    factor = 1
    while number > 1:
        factor += 1
        if number % factor == 0:
            if 1 < factor < oldnum:
                return False
            number //= factor
    return True

primefinder(200000)