2015-05-29 28 views
-4
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”,我得到的结果是“它不是素数”和“它是素数”。我尝试使用“in”运算符而不是“或”。但是我得到了同样的结果。请让我知道我在哪里错了?Python prime nos_“或”运算符问题

+3

我记得你之前问过这个。不要重复你的问题,而要仔细阅读代码并手动执行它的陈述,你可能会发现这个问题。 – TigerhawkT3

+0

非常感谢您的宝贵意见。 –

回答

0

当您输入'0'时,范围(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" 
+0

谢谢。你的代码是完美的,除非它不应该计数= 1当我== 0或i == 1,因为除数不能是0或1. –

+0

Ohhh是的,你是crct。 Tnq :) – rajeshv90

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" 
+0

完美。谢谢。 –

+0

是的。没有问题。 – Specas