python - 除 Sieve 之外的快速素数生成器

标签 python primes sieve

我最近编写了这段代码,但想知道是否有更快的方法来查找素数(不是筛子;我仍在尝试实现)。有什么建议吗?我正在使用 Python,而且对它还很陌生。

def isPrime(input):
    current = 0
    while current < repetitions:
        current = current + 2
        if int(input) % current == 0:
            if not current == input:
                return "Not prime."
            else:
                return "Prime"
        else:
            print current

    return "Prime"

i = 1
primes = []
while len(primes) < 10001:
    repetitions = int(i)-1
    val = isPrime(i)
    if val == "Prime":
        primes.append(i)
    i = i + 2
print primes[10000]

最佳答案

这是一个检测 x 是否为素数的函数

def is_prime(x):
    if x == 1 or x==0:
        return False
    elif x == 2:
        return True
    if x%2 == 0:
        return False
    for i in range(3, int((x**0.5)+1), 2):
        if x%i == 0:
            return False
    return True

以及另一个打印素数的实现

def prime_range(n):
    print(2)
    for x in range(3, n, 2):
        for i in range(3, int((x**0.5)+1), 2):
            if x%i == 0:
                break
        else:
            print(x)

希望对你有帮助!

关于python - 除 Sieve 之外的快速素数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655403/

相关文章:

Java 8 Stream,得到头和尾

java - 提高 Sieve 方法的性能

python - Py.test - 基于 session 的设置

javascript - scrapy填写POST表单

python - 如何表达和强制一个类有两种操作模式,每种模式都有一些有效和无效的方法

javascript - 使用 Mercende 素数生成器得到错误答案

python - 当我更改正在迭代的列表时,如何避免代码中出现列表错误函数?

python - python中的素数使用for循环和break

java - Java 中更快的埃拉托斯特尼筛法和素数分解

python - 在 setup.py 中强制执行 python 版本