Python prime nos_"或"运营商问题

时间:2015-05-29 03:48:39

标签: python

n = input("enter the no: ")
def prime():
    global count
    count = 0
    for i in range(n):
        if n==0 or n==1:
            print "it is not prime"            
        elif i==0 or i==1:
            pass       
        elif n%i==0:
            count+=1
    return count
prime()
if count>0:
    print "not prime"
else:
    print "it is prime"

我试图找到一个给定的不是素数。我遇到了数字0和1的问题。对于" 0"我得到的结果是"它是素数"。对于" 1",我得到的结果是"它不是素数"并且"它是黄金"。我尝试在"中使用"运算符而不是"或"。但我得到了同样的结果。请告诉我哪里错了?

2 个答案:

答案 0 :(得分:0)

当您输入' 0' range(n)返回空列表。所以它给你0是素数。 试试这段代码:

n = input("enter the no: ")
def prime():
    global count
    count = 0
    if n == 0 or n == 1:
        count = 1
    for i in range(n):
        if i==0 or i==1:
            count = 1
        elif n%i==0:
            count+=1
    return count
prime()
if count>0:
    print "not prime"
else:
    print "it is prime"

答案 1 :(得分:0)

如果您正在使用全局变量计数,则不必返回它。如果从1开始循环,则可以使代码更清晰。

因此,对于素数,它只有一个因子(数字1)。

n = int(raw_input("enter the no: "))
count = 0
def prime():
    global count
    global n
    count = 0
    for i in range(1,n):           
        if n%i==0:
            count+=1

prime()
if count==1:
    print "It is prime"
else:
    print "Not prime"