2015-05-29 1 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_ "or" операторская проблема

+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

Спасибо. Ваш код совершенен, за исключением того, что он не должен быть count = 1, когда i == 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