为澄清起见,这与问题Sieve of Eratosthenes - Finding Primes Python不同,因为我不想在两个数字之间生成素数,但是我想检查一个数字是否是素数。
我编写了以下代码来查找数字是否为质数。然后我听说了Eratosthenes算法的Sieve,它显然更快,但是我不知道如何在以下代码中编写它?
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"
你们能帮我吗?
答案 0 :(得分:0)
我在repl.it上做到了。我做到了,所以每次找到质数时,我都会将其存储在列表中。
在计算数字是否为质数时,我将遍历列表中的所有数字,而不是遍历所有数字。
这模拟了您对eratasthenes筛子的反应。
答案 1 :(得分:0)
Eratosthenes筛是一种生成素数的方法。因此它将替换您的代码:
for i in range(2,(number1//2)):
if number1 % i == 0:
# handle non-prime
使用
if number1 in previous_generated_primes:
# handle non-prime