Python:列出所有小于输入数字的质数
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
),改用整数运算。虽然在这里可能没什么大问题,但这样做可能会引发很多麻烦。