2017-05-31 21 views
0
num=int(input("Enter any number : -")) 
for i in range(num): 
    if(num <= 1): 
     print("Please enter a number more than 1") 

    elif(num%i ==0): 
     print("The number is not a prime number") 
     break 
    else: 
     print("The number is a prime number") 
     break 

しかし、値0を与えたときと私は間違いを犯しました。私はpythonを実行しようとしていますが、これを実行しようとしています "素数プログラムをチェック"

+0

実際の質問は何ですか?あなたが一般的な正しい結果を得られない理由(コードで素数が正しくチェックされない)、または1より小さい数字のエラーがなぜ発生するのだろうと思っていますか? –

+0

私は間違っているとは思わない...あなたはあなたが得るエラーであなたの投稿を編集できますか? – Dadep

答えて

3

数字がプライムであるかどうかをチェックする効率的な方法はたくさんあります。ここで

、ご質問が特定

What is the best algorithm for checking if a number is prime?、エラーがたくさんあります。

1)コードは、あなたの範囲は0から始まるのでゼロDivisonのエラーが原因で失敗したが、試す

for in range(2, num)

NUM%1は常にゼロ

2であるため)if(num <= 1):べき

num = int(input("Enter any number : ")) 

def check_prime(num): 
    if(num <= 1): 
     print("Please enter a number more than 1") 
     return 

    # check if number is 2 or 3 as they are prime numbers 
    if (num == 2 or num == 3): 
     print("Number is prime") 
     return 

    # checking for number divisible by 2, 3 or 5 covers large set of numbers 
    if (num % 2 == 0 or num % 3 == 0): 
     print("Number is not a prime number") 
     return 

    # if none of the above case is satisfied then iterate to half of the number 
    # as number more than half is never a factorial of the number 
    for i in range(7, int(num/2)): 
     if(num % i == 0): 
      print("The number is not a prime number") 
      return 
    print("Number is prime") 


check_prime(num) 

はしかし、利用できる効率的なソリューションがあります:ループはここにあなたのスクリプトの簡単な修正版で

をループ不要避けるために、対象外となります。

関連する問題