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
你好。我需要创建一个SIMPLE python程序,它列出了所有素数,包括输入数字。例如,如果输入10,则会产生2,3,5,7
我更喜欢保持简单,不要使用更高级的功能,如def,break。嵌套循环是首选的。
上面的代码不起作用,它包含非素数,例如25和91。
请帮忙!
答案 0 :(得分:2)
您的代码得出结论,如果至少有一个 x
不能将y
整除,则需要检查它是否为所有 y
。
您还需要仔细检查y
循环的界限。
另外,我建议你摆脱浮点计算(例如x % 2.0
)并坚持使用整数数学。 可能在这里没关系,但有可能打开一大堆蠕虫。
答案 1 :(得分:1)
你必须改变你的想法。您的代码只要是某个数字的非倍数就会报告一个数字。相反,您应该不报告一个数字,只要它是某个数字的倍数。
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