你如何找到python中的前N个质数?
How do you find the first N prime numbers in python?
我是 python 的新手,所以我不完全了解如何使用循环。我目前正在编写一段代码,我必须找到前 N 个质数。
想要的结果是,如果你输入 5,它会输出 2、3、5、7 和 11,但无论我为 'max' 输入什么,输出总是最终为 2 和 3。是否有改善方法?
max=int(input("How many prime numbers do you want: "))
min=2
while(min<=(max)):
for c in range(2, min):
if min%c==0:
break
else:
print min
min=min+1
您只在 else
块中递增 min
,即,如果 min % c
对于所有 c
都是非零的,即,如果 min
是质数.这意味着代码将无法移动超过任何合数。您可以通过取消缩进 min=min+1
一级来解决此问题,使其与 for
和 else
.
对齐
number = int(input("Prime numbers between 2 and "))
for num in range(2,number + 1):
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
解法:获取第n个素数项。遍历素数的每个自然数并将素数附加到列表中。当列表的长度满足用户第 n 个质数条目时终止程序。
# Get the number of prime numbers entry.
try:
enterNumber = int(input("List of nth prime numbers: "))
except:
print("The entry MUST be an integer.")
exit()
startNumber = 1
primeList = []
while True:
# Check for the entry to greater than zero.
if enterNumber <= 0:
print("The entry MUST be greater than zero.")
break
# Check each number from 1 for prime unless prime number entry is satisfied.
if startNumber > 1:
for i in range(2,startNumber):
if (startNumber % i) == 0:
break
else:
primeList.append(startNumber)
if (len(primeList) == enterNumber):
print(primeList)
break
else:
startNumber = startNumber + 1
continue
以下代码将为您提供 3 到 N 之间的质数,其中 N 是用户的输入:
number = int(input("Prime numbers between 2, 3 and "))
for i in range(2,number):
for j in range(2,int(i/2)+1):
if i%j==0:
break
else:
if j==int(i/2):
print(i)
你可以看到要检查一个数字 i 是否为质数,你只需要检查它与数字的整除性直到 n/2。
试试看:
n = int(input("First N prime number, N ? "))
p = [2]
c = 2
while len(p) < n:
j = 0
c += 1
while j < len(p):
if c % p[j] == 0:
break
elif j == len(p) - 1:
p.append(c)
j += 1
print(p)
很简单。检查下面的代码,确保它有效!
N = int(input('Enter the number: ')
i=1
count=0
while(count<N):
for x in range(i,i+1):
c=0
for y in range(1,x+1):
if(x%y==0):
c=c+1
if(c==2):
print(x)
count=count+1
i=i+1
我是 python 的新手,所以我不完全了解如何使用循环。我目前正在编写一段代码,我必须找到前 N 个质数。 想要的结果是,如果你输入 5,它会输出 2、3、5、7 和 11,但无论我为 'max' 输入什么,输出总是最终为 2 和 3。是否有改善方法?
max=int(input("How many prime numbers do you want: "))
min=2
while(min<=(max)):
for c in range(2, min):
if min%c==0:
break
else:
print min
min=min+1
您只在 else
块中递增 min
,即,如果 min % c
对于所有 c
都是非零的,即,如果 min
是质数.这意味着代码将无法移动超过任何合数。您可以通过取消缩进 min=min+1
一级来解决此问题,使其与 for
和 else
.
number = int(input("Prime numbers between 2 and "))
for num in range(2,number + 1):
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
解法:获取第n个素数项。遍历素数的每个自然数并将素数附加到列表中。当列表的长度满足用户第 n 个质数条目时终止程序。
# Get the number of prime numbers entry.
try:
enterNumber = int(input("List of nth prime numbers: "))
except:
print("The entry MUST be an integer.")
exit()
startNumber = 1
primeList = []
while True:
# Check for the entry to greater than zero.
if enterNumber <= 0:
print("The entry MUST be greater than zero.")
break
# Check each number from 1 for prime unless prime number entry is satisfied.
if startNumber > 1:
for i in range(2,startNumber):
if (startNumber % i) == 0:
break
else:
primeList.append(startNumber)
if (len(primeList) == enterNumber):
print(primeList)
break
else:
startNumber = startNumber + 1
continue
以下代码将为您提供 3 到 N 之间的质数,其中 N 是用户的输入:
number = int(input("Prime numbers between 2, 3 and "))
for i in range(2,number):
for j in range(2,int(i/2)+1):
if i%j==0:
break
else:
if j==int(i/2):
print(i)
你可以看到要检查一个数字 i 是否为质数,你只需要检查它与数字的整除性直到 n/2。
试试看:
n = int(input("First N prime number, N ? "))
p = [2]
c = 2
while len(p) < n:
j = 0
c += 1
while j < len(p):
if c % p[j] == 0:
break
elif j == len(p) - 1:
p.append(c)
j += 1
print(p)
很简单。检查下面的代码,确保它有效!
N = int(input('Enter the number: ')
i=1
count=0
while(count<N):
for x in range(i,i+1):
c=0
for y in range(1,x+1):
if(x%y==0):
c=c+1
if(c==2):
print(x)
count=count+1
i=i+1