在列表中存储前N个素数的Python程序?
我编写了以下代码来查找N个素数。但是,我无法将其存储在列表中在列表中存储前N个素数的Python程序?,python,list,append,primes,Python,List,Append,Primes,我编写了以下代码来查找N个素数。但是,我无法将其存储在列表中 def prime(n): global count s=0 flag=0 ls=[] for i in range(2,n/2+1): if(n%i==0): flag=1 break
def prime(n):
global count
s=0
flag=0
ls=[]
for i in range(2,n/2+1):
if(n%i==0):
flag=1
break
if(flag==0):
print n
ls.append(n)
count=count+1
print ls
# main pro
n=input("Enter the number of prime numbers to be displayed: ")
print"The prime numbers are:"
count=0
x=2
while(count<n):
prime(x)
x+=1
但当我运行程序时,我得到的输出是:
Enter the number of prime numbers to be displayed: 5
The prime numbers are:
2
[2]
3
[3]
[]
5
[5]
[]
7
[7]
[]
[]
[]
11
[11]
如何在不更改上述代码的情况下将素数添加到列表中??
我应该在后面的部分附加这些元素吗?我是Python新手,非常感谢大家的帮助!谢谢大家! 这将返回
计数的数组
素数:
def get_primes(count):
primes = []
n = 2
while len(primes) != count:
for i in range(2, n // 2 + 1):
if n % i == 0:
break
else:
primes.append(n)
n += 1
return primes
您可以这样使用它:
n=input("Enter the number of prime numbers to be displayed: ")
array_of_n_prime_numbers = get_primes(n)
print("The prime numbers are:", array_of_n_prime_numbers)
试试这个
def prime(x):
if x<1:
return []
prime_numbers = [2,3]
if x<3:
return prime_number[:x]
for i in range(2,x):
next_pn = prime_numbers[-1]+2
while any(not(next_pn%pn) for pn in prime_numbers):
next_pn += 2
prime_numbers.append(next_pn)
return prime_numbers
N = input("Enter the number of prime numbers to be displayed:")
print (prime(int(N)))
不需要遍历所有数字,您可以只遍历其前面的素数。这里有一个简单的方法:
def prime(n):
ls = [2,3]
if (n < 3):
return ls[:n]
for i in range(2,n):
generate = ls[-1]+2
while any(not(generate%num) for num in ls):
generate += 2
ls.append(generate)
return ls
n = int(input("Enter the number of prime numbers to be displayed:"))
print (prime(n))
全局声明
ls
,您在每次迭代中都会重新创建它。但我得到的输出是:[2][2,3][2,3][2,3][2,3][2,3][2,3][2,3][3][3][2,3][2,3][3][2,3][3][3,3][3,3][5][2,3,5][2,3,5][2,3,5][3,5][2,5][3,5][2,5][3,5][2,3][3][3][3][。但我得到的输出是:[2][2,3][2,3][2,3,5][2,3,5][2,3,5,7][2,3,5,7][2,3,5,7][2,3,5,7][2,3,5,7][2,5,7]如何在最后打印一次?谢谢大家!@AanandhiVBprint(“质数是:”,质数数组)
@AanandhiVB您不需要声明全局列表我很抱歉让您感到困惑,但根据Jean François Fabre的说法,当我声明全局列表时,我能够得到质数列表。但我得到的输出像:[2][2,3][2,3][2,3,5][2,3,5][2,3,5,7][2,3,5,7][2,3,5,7][2,3,5,7][2,3,5,7]如何在最后打印一次?我不想更改我编写的代码。谢谢@AanandhiVB在您的函数之外打印它。您得到这个输出是因为您每次调用函数时都打印素数。非常感谢!!如果符合你的目的,接受答案并投票
Enter the number of prime numbers to be displayed:5
[2, 3, 5, 7, 11]
def prime(n):
ls = [2,3]
if (n < 3):
return ls[:n]
for i in range(2,n):
generate = ls[-1]+2
while any(not(generate%num) for num in ls):
generate += 2
ls.append(generate)
return ls
n = int(input("Enter the number of prime numbers to be displayed:"))
print (prime(n))
[2, 3, 5, 7, 11]