fqbcvd 2024-04-21 13:03 采纳率: 0%
浏览 10

如何用python求100以内质数问题?

python求100以内质数,我写的这个是有什么逻辑上的问题吗?为什么我打印出来是99-2的一个循序呢?

img

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-21 13:03
    关注

    引自免费微信小程序:皆我百晓生

    在您的代码中,存在一个逻辑错误。您应该在for循环外部减少a的值,而不是在每次找到一个因子时减小。以下是修改后的代码:

    a = 100
    while a >= 2:
        is_prime = True
        for i in range(2, int(a ** 0.5) + 1):  # 只需检查到根号a即可,可以提高效率
            if a % i == 0:
                is_prime = False
                break  # 找到因子后,无需继续遍历,可以直接跳出循环
        if is_prime:
            print(a)
        a -= 1
    

    在这个版本中,我们首先设置了一个布尔变量is_prime为True,表示当前数值可能是质数。然后我们只检查从2到√a的所有数字(因为一个大于1的合数一定有一个因子小于等于它的平方根)。如果找到了一个因子,我们将is_prime设为False并跳出循环。只有当is_prime保持为True时,才会打印出该数,表示它是质数。

    这样修改后,程序将正确地输出100以内的所有质数。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月21日