ちょっとPython - 素数を判定 -1
プログラミングで素数の判定をします。まず素数とは
素数とは2以上の"1"と対象となる数字(その整数自身)以外のもので割り切れないもの。
素数を判定するプログラムを作ります。まず日本語で作ってみます。
これをpythonのコードに置き換えます
def isPrime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
このコードを実行して出力します。
print(isPrime(7))
print(isPrime(8))
"7"は素数(True)で"8"は素数でない(False)と出てきました。
日本語とコードを並べてみます。
このコードですが大きな数、10の9乗となると計算スピードがかなり落ちるということです。こんな大きな数を計算することは通常ないのですが、この世界ですとスピードが求められる場合があります。
高速化するには
これを使います。√nは"n**0.5"で計算できるので
def isPrime(n):
if n < 2:
return False
for i in range(2, n**0.5):
if n % i == 0:
return False
return True
とするとエラーがでます。"n**0.5"は整数出ないので実行できないというエラーなので、整数にしてやります。"int(n**0.5)"とします。
def isPrime(n):
if n < 2:
return False
for i in range(2, int(n**0.5)):
if n % i == 0:
return False
return True
これで大丈夫かな?
print(isPrime(7))
print(isPrime(8))
を実行すると両方ともTrueになります。実はint(n**0.5)すると切り捨てられるので必要な数にが足らなくなる場合があります。なので
def isPrime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
"+ 1"してやるます。これでうまく行きます。