python - 在 python 中打印质数

标签 python loops logic

我正在尝试在 python 中打印 3-50 范围内的质数。这是代码:

for i in range(3,51):
flag=0
    for j in range(3,i):
        if(i%j==0):
            flag=1
    if(flag==0):
        print(i)

代码运行正常,除了它还在打印 4.请指出代码逻辑是否有问题(忽略效率问题)。

最佳答案

print(2)
for i in range(3,51):
    flag=0
    for j in range(2,int(i/2)):
        if(i%j==0):
            flag=1
    if(flag==0):
    print(i)

当 i = 4 时,范围将为 range(2,2) 即 0。它不会进入 if(i%j == 0): block 。因此,当 i = 4 时,您的标志将始终为 0。

解决它的一种方法是在 i 是否为 4 时添加一个检查。

if(flag==0 and i != 4):

编辑:正如其他人评论的那样,将范围增加 1 比检查值是否为 4 更好。

for j in range(2,int(i/2)+1)

关于python - 在 python 中打印质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50905462/

相关文章:

python - 为什么我的网络抓取工具只能工作一半的时间?

java - Java 中循环中的新对象被覆盖

bash - 创建一个 bash 脚本 - 遍历文件

css - 根据内容显示/隐藏同级 div

python - 如何从带有 Unicode 字符的路径中读取图像?

python - backend_qt5.py "' figure' 是一个未知的关键字参数,在 matplotlib

python - 如何在python中编写递归函数

Java 数组游戏 - 游戏逻辑概念

c - 为什么给定的 'C' 代码片段中 x 的值为 28?

python - 在嵌入式 Python 中禁用内置模块导入