Python:列出输入数字之前存在的所有素数

时间:2013-03-11 07:29:43

标签: python loops numbers nested

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。

请帮忙!

2 个答案:

答案 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