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",我得到的结果是"它不是素数"并且"它是黄金"。我尝试在"中使用"运算符而不是"或"。但我得到了同样的结果。请告诉我哪里错了?
答案 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"