-2
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。

请帮忙!

4

2 回答 2

2

您的代码得出结论,如果一个数字不能被至少 onex整除,则它是素数,而它需要检查它是否不能被all整除。 y y

您还需要仔细检查y循环的边界。

在旁注中,我建议您摆脱浮点计算(例如x % 2.0)并坚持整数数学。在这里可能无关紧要,但有可能打开一大罐蠕虫。

于 2013-03-11T07:32:57.080 回答
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
于 2013-03-11T07:52:32.163 回答