我如何找到某个范围内的所有质数并将它们打印出来?

问题描述

我想逐行列出 100 到 200 之间的所有质数... 这是我尝试编写的代码。我正在尝试使用 for 循环来查看数字(例如 100)是否可以被从 2 到数字本身的任何数字整除。所以我希望程序检查它是否可以被任何一个 c 值整除,如果是,则停止程序然后继续下一个数字(例如 101、102...)但我似乎无法找到一种方法来做到这一点 idk 如何正确使用 break 命令

prime = False
for i in range(100,201):
    for c in range(2,i):
        if i % c == 0:
            prime = False
            break
        else:
            prime =True
    if prime == True:
        print(i)


        

        




        

        
        
    

解决方法

首先你需要用 pip 安装 sympy

pip install sympy

然后使用此代码示例

from sympy import isprime

start_range = 10
stop_range = 100
primes = []

for n in range(start_range,stop_range + 1):
    if isprime(n):
        primes.append(n)

print(primes)
,

试试这个:

for i in range(100,201):
    prime =True
    for c in range(2,i):
        if i % c == 0:
            prime = False
            break
       
    if prime == True:
        print(i)
,

我认为这种情况是:当我们开始测试特定数字的素数时,我们假设它是素数。如果我们找到一个除数,我们知道它不是质数,并适当地标记它。如果我们到达候选除数的末尾,并且我们还没有将它标记为非质数,那么它就是质数。

需要考虑的其他几点:

  1. 测试偶数(2 除外)是否为质数没有多大意义。它们不是,所以我们不如不测试它们是否是。
  2. 同样,当我们生成候选除数时,生成偶数也没有实际意义。偶数不能整除为奇数。
  3. 除数成对出现。对于每个大于一个数的平方根的除数,必须有一个小于小于平方根的除数。如果我们没有找到小于或等于平方根的除数,我们也不会找到大于平方根的除数(或者,更直接地措辞:如果我们没有找到小于或等于的除数数的平方根,我们可以停止寻找——它是质数)。

稍微改变一下主题:当您正在寻找达到某个极限的所有素数时,您可能需要考虑使用埃拉托色尼筛法。