【问题标题】:How to incorporate Sieve of Eratosthenes Algorithm to find prime numbers?如何结合埃拉托色尼筛算法来寻找素数?
【发布时间】:2019-07-17 20:09:25
【问题描述】:

为了澄清,这与这个问题Sieve of Eratosthenes - Finding Primes Python 不同,因为我不想在两个数字之间生成质数,但我想检查一个数字是否是质数。

我编写了以下代码来查找一个数字是否为质数。然后听说了埃拉托色尼筛法,显然速度更快,但是不知道下面的代码怎么写?

number1 = int(raw_input("""
Enter any number :- """))
if number1 == 1:
    print "1 is a special case. It is neither a Prime Number nor a Normal Number. Be like 1"
if number1 == 2:
    print number1, "is a Prime Number"
if number1 == 4:
    print "4 is not a Prime Number"
    print "2 times 2 is 4"
if number1 > 1:
    for i in range(2,(number1//2)):
        if number1 % i == 0:
            print number1, "is not a Prime Number"
            print i, "times", (number1/i), "is", number1
            break
    else:
        print number1, "is a Prime Number"
else:
    print "Please type a positive number only"    

你们能帮帮我吗?

【问题讨论】:

  • 如果有帮助可以查看这个问题 [stackoverflow.com/questions/3939660/…
  • 这是一个附带问题,但您可以将number1 = int(number1) 放在输入之后,然后您不必在其余代码中调用int()

标签: python python-2.7 sieve-of-eratosthenes


【解决方案1】:

埃拉托色尼筛法是一种生成素数的方法。因此它将替换您的代码:

for i in range(2,(number1//2)):
    if number1 % i == 0:
        # handle non-prime

if number1 in previous_generated_primes:
    # handle non-prime

【讨论】:

  • 如果您的问题是“我如何使用埃拉托色尼筛生成素数”,那么这个问题是a dupe of this
  • 我们不能用它来检查一个数是否是素数吗?
  • @Lucifer 是的,使用我上面描述的方法。
【解决方案2】:

我在 repl.it 上做了这个。我做到了,所以每次我找到一个素数时,我都将它存储在一个列表中。

在计算一个数字是否为素数时,我不会遍历所有导致它的数字,而是遍历列表中的所有数字。

这模拟了 Eratasthenes 的筛子会让你做什么。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多