素数蟒蛇

时间:2016-02-14 11:11:22

标签: python

我是python的初级程序员,对我的代码有疑问我写的是:

number = int(input("Enter a random number: "))

for num in range(1, number + 1) :
    for i in range(2, num) :
         if (num % i) == 0 :
            break
         else :
             print(num)
             break

当我运行这个程序时,我也得到9,15 21作为输出。但这些不是素数。 我的代码出了什么问题?

谢谢!

5 个答案:

答案 0 :(得分:2)

使用if (num % i) == 0:时,对于每个else,您都会转到num块,这不是2的乘法,因为您以2开始i,因此打印{{ 1}}。我用你的代码打印了所有奇数。

您可以使用以下内容:

num

number = int(input("Enter a random number: ")) for num in range(1, number + 1): prime = True for i in range(2, num): if (num % i) == 0: prime = False break if prime: print(num) 遇到没有休息的除数时,它会将prime设置为False

答案 1 :(得分:0)

麻烦在于你的else语句,它必须在第一个循环之外运行。我推荐以下内容:

def isprime(num):
    for i in range(2, num):
        if (num % i) == 0:
            return False
    return True


for num in range(1, number + 1) :
    if isprime(num):
        print num

答案 2 :(得分:0)

  

你的问题

你放入for循环的else语句意味着如果那个数字(num)可以被i表示的当前整数整除,则返回true,将其视为不正确的素数。

  

建议

您的外部循环以1开头,应该更改为2,因为1不是素数

  

解决方案

def fun(number):
 #Not counting 1 in the sequence as its not prime
 for num in range(2, number + 1) :
    isPrime = True
    for i in range(2, num) :
         if (num % i) == 0 :
        isPrime = False  
            break
    if isPrime:
        print num
fun(10) 

<强>输出

1

2

3

5

7

答案 3 :(得分:0)

我假设随机数是您希望数字在其中的范围。

我发现代码中的变量i总是等于2.这破坏了第二个for循环的目的

素数是不能被2,3或7整除的数字,不包括2,3或7!

凭借这些知识,我调整了你的代码来显示真正的素数。

  

溶液

number = int(input("Enter a random number: "))

for num in range(2,number +1) :
    printnum = True
    if num == 2:
        printnum = True
    elif num == 3:
        printnum = True
    elif num == 7:
        printnum = True
    elif num % 2 == 0:
        printnum = False
    elif num % 3 == 0:
        printnum = False
    elif num % 7 == 0:
        printnum = False

    if printnum == True:
        print(num)

答案 4 :(得分:0)

这是我的方法,用于生成前十个素数而没有任何导入,只是带有我们正在大学学习的组件的简单代码。我将这些数字保存到列表中。

def main():
    listaPrim = []
    broj = 0
    while len(listaPrim) != 10:
         broj+= 1
         brojac = 0
         for i in range(1,100):
             if broj % i == 0:
                 brojac += 1
         if brojac == 2:
             listaPrim.append(broj)

    print(listaPrim)

if __name__=='__main__':
    main()