Python:列出所有小于输入数字的质数

-2 投票
2 回答
8833 浏览
提问于 2025-04-17 18:39
n= int(raw_input("Number? "))
for x in range (2, n+1): 
    for y in range (2, x+1):
    if x < n+1 and x % 2.0 > 0 and x % 3.0 > 0 and x%y > 0:
            print x
            x = x + 1  

你好!我需要写一个简单的Python程序,能够列出所有小于等于输入数字的质数。比如,如果你输入10,它应该输出2、3、5和7。

我希望这个程序保持简单,不想用更复杂的功能,比如def和break。我更喜欢使用嵌套循环。

上面的代码不行,因为它包含了一些不是质数的数字,比如25和91。

请帮帮我!

2 个回答

1

你需要换个思维方式。你的代码一旦发现某个数字不是y的倍数,就立刻报告这个数字。其实,你应该在发现某个数字是y的倍数的时候,不报告这个数字。

n= int(raw_input("Number? "))
for x in range (2, n + 1):
    prime= True
    for y in range (2, x):
        if x % y == 0:
            prime= False
    if prime:
        print x
2

你的代码判断一个数字 x 是否是质数的标准是,如果它不能被至少一个 y 整除,那么就认为它是质数。其实应该检查它不能被所有的 y 整除。

另外,你还需要仔细检查 y 循环的边界条件。

顺便提一下,我建议你去掉浮点数的计算(比如 x % 2.0),改用整数运算。虽然在这里可能没什么大问题,但这样做可能会引发很多麻烦。

撰写回答