打印素数到用户的输入

时间:2014-12-12 08:49:42

标签: python python-3.x

我正在制作一个快速程序,要求用户输入一个数字,然后将所有素数输出到该数字:

n=int(input("Enter a number: "))
a=2
if n<=1:
    n=int(input("Enter another number: "))
while a<n:
    for i in range(2,n):
        if a%i==0:
            break
        else:
            print (a)
            break
    a=a+1

我遇到的问题是它不会打印2。例如,如果我使用20作为n值,则会打印:

Enter a number: 20
3
5
7
9
11
13
15
17
19

2 个答案:

答案 0 :(得分:1)

你有两个错误:

  1. else输入错误,因此它与if而不是for一致(如果全部print > a以下的值不是a的因子,而不是第一个不是{的}因子;以及

  2. 您的内心range最多为n,而非a(因此始终包括aa % a == 0)。

  3. 这将有效:

    for a in range(2, n):
        for i in range(2, a):
            if a % i == 0:
                break
        else:
            print(a)
    

    注意我已经使用for循环来替换外部while,当您已经知道要停在哪里时,这通常会更好。您可以通过查看a的平方根,并忽略2以外的偶数来提高代码效率,但我会将这些优化留给您。

答案 1 :(得分:0)

您可以从1开始循环。

您的循环将从1开始,因此您将获得2输出。