Python 将最内层的for循环重写为while语句

Python 将最内层的for循环重写为while语句,python,while-loop,Python,While Loop,这应该做到: boo_list=[True]*N primes_foundlist=[] for prime in range (2,N): if boo_list[prime]: primes_foundlist.append(str(prime)) for i in range (prime*prime,N,prime): boo_list[i]=False out_str=' '.join(primes_foundlist)

这应该做到:

boo_list=[True]*N
primes_foundlist=[]
for prime in range (2,N):
    if boo_list[prime]:
        primes_foundlist.append(str(prime))
        for i in range (prime*prime,N,prime):
            boo_list[i]=False
out_str=' '.join(primes_foundlist)
print("Number of prime numbers found are: ",len(primes_foundlist))
print(out_str)
boo_list=[True]*N
primes_foundlist=[]
对于范围(2,N)内的素数:
如果boo_列表[prime]:
primes_foundlist.append(str(prime))
i=素数*素数

而我把它作为
for
循环有什么错?不过,我认为代码总体上需要一些改进。这似乎是针对堆栈溢出的。由于这是有效的代码,您应该将其发布到,以获取改进方法的建议。它运行良好,我很好奇如何使用while实现它。尝试了一些方法,但无法理解您是如何尝试的,我们将帮助您了解您做错了什么以及如何修复它。我们不会为您编写它。将
i
初始化到范围的开头。
while
条件应检查其是否小于范围的末尾。在循环体的末尾,按
N
递增
i
。如果boo\u list[prime]:primes\u foundlist.append(str(prime))i=prime,而i在范围内(prime*prime,N,prime):boo\u list[i]=False
boo_list=[True]*N
primes_foundlist=[]
for prime in range (2,N):
    if boo_list[prime]:
        primes_foundlist.append(str(prime))
        i=prime*prime
        while i<N:
            boo_list[i]=False
            i+=prime
out_str=' '.join(primes_foundlist)
print("Number of prime numbers found are: ",len(primes_foundlist))
print(out_str)