这是我的代码:
def findPrimes():
prime=True
c=0
n=1
while n<14:
n=n+1
for i in range(1,n):
if n%i==0:
prime=False
if prime==True:
print(n)
while c==0:
n=n+1
if (n%2==0) or (n%3==0) or (n%5==0)or (n%7==0)or (n%11==0)or (n%13==0):
c=0#this does nothing
else:
for i in range(5,int(n**0.5),2):
if n%i==0:
break
print(n)
findPrimes()
它应该输出: 2 3 五 7 11 13 17 ... 相反,我得到: 17 19 23 29 31 37 41 43 47 ... 或者(以不同的缩进方式中断): 2 3 4 五 6 7 8 9 10 11 12 13 17 19 ... 这是为什么?
答案 0 :(得分:1)
找到质数的最有效方法是使用埃拉托色尼筛网算法。
代码如下:
n = int(input("enter the number upto which to find: "))
sieve = set(range(2, n+1))
while sieve:
prime = min(sieve)
print(prime, end="\t")
sieve -= set(range(prime, n+1, prime))
print()
说明:
首先获取范围的上限
分配一个set
类型的变量来消除重复
我们知道 0,1 不是素数,所以我们不计算它们,即 (2,n+1)
我们取最小元素为素数并打印
现在,如果 2 是素数,则 2 的所有倍数都不能是素数。所以我们忽略了2的倍数。同下面的3,5,7等...
所以,所有剩余的数字都被添加到筛子中,即剩余的数字是素数。
答案 1 :(得分:0)
考虑这段代码:
while n<14:
n=n+1
for i in range(1,n):
if n%i==0:
prime=False
因为,每次迭代时,prime将等于false
x%1 == 0表示所有x
答案 2 :(得分:0)
这就是你所需要的一切。
def primes(n):
primeslist = [2]
for i in range (2,n):
p = 1
for j in primeslist:
if (i%j) == 0:
p = 0
break
if p == 1:
primeslist.append(i)
return primeslist
primeslist = primes(66)
print(primeslist)
注意:
primeslist = primes(66) print(primeslist) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]
答案 3 :(得分:0)
使用Eratosthenes筛选找到所有素数的有效方法。事实证明,您只需要检查sqrt(n)项目。
def primes_sieve2(limit):
a = [True] * limit # Initialize the primalitylist
a[0] = a[1] = False
for (i, isprime) in enumerate(a):
if isprime:
yield i
for n in xrange(i*i, limit, i): # Mark factors non-prime
a[n] = False
答案 4 :(得分:0)
#Efficient way of Prime number -------->>>>>
try:
num = int(input('Enter number : '))
if(num>1):
for i in range(2,num):
if (num%i==0):
print(f'{num} is not a Prime Number...!')
break
else:
print(f'{num} is a Prime Number...!')
elif num==0:
print(f'{num} is conpositive number')
elif num == 1:
print(f"{num} is not considered as prime or composite")
else:
print('Invalid input')
except:
print('Invalid input')
答案 5 :(得分:-2)
如果你想检查一个数是否为质数,让我们检查数字 13。
a = 13
for b in range(2,a) :
if a % b == 0 :
print("not prime")
break
else :
print("prime")