質問: 0: return False return True ``` ### 試したこと if n < 2:で1を省いていることと、elseのfor文で素数判定したいnを2からnまで繰り返していることは分かったのですが、if文でのi*i > n:の箇所で何をしたいのかが、よく分かりません。 また、例えばn=7の場合、i=2のとき、2*2>7ではないので、elifに行き、7/2の余りは0ではないため、return Trueに行くのでしょうか? ### 補足情報(FW/ツールのバージョンなど)
回答: `i*i > n:`の条件は、割り算の回数を減らすためのものです。`n`が合成数の場合、√`n`以下の数が必ず素因数にあります(√`n`より大きい数を2つかければ`n`を超えますので、片方が√`n`以下でないとかけて`n`になりません)。 > > 例えばn=7の場合、i=2のとき、2*2>7ではないので、elifに行き7/2の余りは0ではないため > > > 次の3に進みますが、3*3=9と7を超えるため、ループから抜けてTrueを返します。