2017-02-07 10 views
-2

私は、数値の平方根までの残りをチェックするプライムチェッカープログラムを作成しました。私は特に1と0でモジュロを削除しても、プログラムは前述のエラーを返します。 4つのリターンを特に除外された場合のゼロによるモジュロ

def primeCheck(n): 
    x = math.floor(math.sqrt(n)) 
    for i in range(x): 
     if (n != 1) and (n != 0): 
      if n%i == 0: 
       return False 
    return True 

それはすべての整数でOK動作しますが、2

primeCheck(2)

x = 1

i in range(1)0

したがってif文の行に:ここにプログラムがあります10でもエラーは返されます。

+4

'if(n!= 1)と(n!= 0):'が 'i'を使用していないので、' n'を使用しています。 – miradulo

+0

コードをデバッグすれば、それをよく理解できます。 – Maroun

答えて

3

三つの問題:特にあなたがi01さ割り引く必要がある2未満

  • nの場合と

    1. ディール。あなたがに必要

    2. は( - 例えば49 - プライムとして、他のあなたは間違ってプライム正方形の数を報告します)数の切り捨て平方根を含んでいます。

    (2)及び(3)for i in range(2, 1 + math.floor(math.sqrt(n))):

    を書き込み、誤ったチェックif (n != 1) and (n != 0):をドロップすることによって解決されます。

  • +0

    私はばかだよ。私はなぜ私がnをチェックしたのか分からない...ありがとう –

    0

    これを試してみてください:n % i

    def primeCheck(n): 
         x = math.floor(math.sqrt(n)) 
         if (n <= 1): 
          return False 
         for i in range(2,x+1): 
          if n%i == 0: 
           return False 
         return True 
    
    +0

    それは0と1を素数として間違って報告する。 'if(n!= 1)と(n!= 0):'は実際にはあまり効果がありません。 –

    +0

    thatsなぜ私はそれがn> = 2のために働くと書いた。そして、そうでないようにif文を削除することができます。あるいは、それをハンドヘルド0と1に変更することもできます。 –

    1

    は、それがゼロであってはならないnではない、それはiです。

    この場合、n != 0をチェックすることは無意味です。i != 0を確認する必要があります。

    関連する問題