Pythonを使って素数(素数)を判断する簡単な方法を解説します。
素数は素数とも呼ばれる。1より大きい自然数のうち、1とこの整数自体を除いて、他の自然数によって割り切れない数を指す。素数は数論において重要な地位を占めている。1より大きいが素数ではない数を合数といいます。1と0は素数でも合数でもない。素数は合数と対立する二つの概念であり、両者は数論の中で最も基本的な定義の一つを構成している。素数の定義をもとにして作られた問題は、コロンビアの予想など、世界的な難問が多い。算術基本定理は、各1より大きい正の整数が素数の積として書き上げられることを証明し、この積の形式は唯一である。この定理の重要な点は,1を素数集合の外に排除することである。1が素数と考えられるなら、これらの厳密な説明はいくつかの制約条件を加えなければならない。数日前にたまたま友達にpythonが素数をどう判断するかを聞きました。インターネットで調べてみました。python脚本で素数を判断するいくつかの方法をまとめました。
1.pythonの数学関数を使う
方法1:
eg:20001から4001までの素数(素数)を求めます。
1または自分でしか割り切れないなら、2回の余りが0の場合、コードは以下の通りです。
1.pythonの数学関数を使う
import math
def isPrime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
2.単一行プログラムのスキャン素数
from math import sqrt
N = 100
[ p for p in range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]
pythonを運用するitertoolsモジュール
from itertools import count
def isPrime(n): www.jb51.net
if n <= 1:
return False
for i in count(2):
if i * i > n:
return True
if n % i == 0:
return False
3.モジュールを使わない2つの方法 方法1:
def isPrime(n):
if n <= 1:
return False
i = 2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True
方法2:
def isPrime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
i = 3
while i * i <= n:
if n % i == 0:
return False
i += 2
return True
eg:20001から4001までの素数(素数)を求めます。
1または自分でしか割り切れないなら、2回の余りが0の場合、コードは以下の通りです。
#!/usr/bin/python
L1=[]
for x in xrange(20001,40001):
n = 0
for y in xrange(1,x+1):
if x % y == 0:
n = n + 1
if n == 2 :
print x
L1.append(x)
print L1
結果は以下の通りです
20011
20021
20023
20029
20047
20051
20063
20071
20089
20101
20107
20113
20117
20123
20129
20143
20147
20149
20161
20173
….