【发布时间】:2016-11-07 14:21:12
【问题描述】:
使用 Python 3.5.1。
我正在尝试构建一个 while 循环,它会迭代一个函数,直到将一定数量的素数附加到一个列表中。我之前写过一个函数,它接受一个数字,评估它是否是一个素数,如果它是一个素数,就将它添加到一个列表中:
def primelister(n):
if n < 10:
return
else:
l1=[]
l2=[]
ts1=np.arange(1,(n+1),1)
for i in ts1:
if n%i==0:
l1.append(i)
continue
else:
continue
if len(l1) < 3:
l2.append(i)
print(l2)
这个函数工作正常,似乎给出了正确的结果。我想在 while 循环中实现该函数,其中 n 的值从 10 开始,并在每个循环中递增 1。循环将一直持续到达到一定数量的素数(即在列出 1000 个素数时停止)。
这是我迄今为止尝试过的:
n=10
l1=[]
l2=[]
while numberofprimes < 100:
ts1=np.arange(1,(n+1),1)
for i in ts1:
if n%i==0:
l1.append(i)
continue
if len(l1) < 3:
l2.append(i)
numofprimes=len(l2)
print("Number of primes so far:", numberofprimes)
n = n + 1
循环显然被打破了。输出始终只有 1,循环似乎是无限的。我们将不胜感激。
【问题讨论】:
-
每次迭代都需要重置
l1。将l1=[]移动到循环中。 -
如果您希望看到解决方案的真正快速和智能实施,请查看link
标签: python