2017-01-27 3 views
-3

誰かが以下のコードの素数リストになぜ2を追加するのか説明してもらえますか?数字2が素数として認識されて2つの係数を説明する

が含まれるべきではない理由である

2 % 0 = 0 
2 % 1 = 0 

として0

に等しくない弾性率を有する少なくとも1個が存在する場合以下の機能のみ素数として番号を認識すべきであるように、右?下記の機能として

def isprime(num1): 
    for i in range(2, num1): 
     if (num1 % i) == 0: 
      return False 
    return True 


def getprimes(max_number): 
    list_of_primes = [] 
    for i in range(2, max_number): 
     if isprime(i): 
      list_of_primes.append(i) 
    return list_of_primes 


def main(): 
    max_num_to_check = int(input('Enter the max limit: ')) 
    list_of_primes = getprimes(max_num_to_check) 

    for i in list_of_primes: 
     print(i) 


main() 
+6

まあ、2は素数.... –

+0

申し訳ありませんトビアスを_is_ - それは私が知っ何かである - 私の質問は、コードに関連しています – s3icc0

+4

"以下の関数は、係数が0でない少なくとも1つの数値がある場合にのみ、素数として数字を認識する必要があります。コードでは、0のモジュロが2の場合と同じ_no_番号があるかどうかをチェックします(ただし、モジュラス0と1はチェックされませんが、範囲は2から始まります)。 –

答えて

0

に等しくない弾性率を有する少なくとも1つの数があるときあなたはどのようにプライムチェック作品誤解のような唯一の素数として数を認識しなければならないそれはそうです。 isprimeメソッドは、であり、係数がゼロに等しいかどうかを実際にチェックします。また、それだけ関連番号をチェックし、1任意数の係数がゼロであり、0とモジュラスが実際に定義されていないので、それは01を含みません。

2の場合、この関数はrange(2, 2)のすべての数値をチェックします。これは空です。したがって、(正しく)Trueを返します。関数は、多分それは明確だが、これに書き換えることができます

def isprime(num1): 
    return not any((num1 % i) == 0 for i in range(2, num1)) 
+0

私が必要としていたリードでした 私が理解しているコードで問題になっているのは、リターンとブレークのようなものに十分な注意を払っていないということなので、私は常に2%しかし、実際には、条件は真であるため、それは上記のレベルを上回り、Trueを返します... – s3icc0

関連する問題