私はPythonを使用して数字が素数であるかどうかを判断するための迅速な方法を得ようとしています。数字がPythonでプライムであるかどうかをテストする最速の方法
私はこれを行う2つの機能を持っています。両方ともTrueまたはFalseを返します。
関数isPrime1は非常に高速です。Falseは、数値が素数ではありません。例えば、大きい数字で。しかし、大きな素数に対してTrueをテストするのは遅いです。
関数isPrime2は、素数に対してTrueを返す方が高速です。しかし、数値が大きくプライムでない場合、値を返すには時間がかかります。最初の機能はそれでうまく機能します。
私は素数ではない大きな数字に対して素早くFalseを返すことができ、素数である大きな数字ですばやく動作するソリューションを考案できますか?
`
def isPrime1(number): #Works well with big numbers that are not prime
state = True
if number <= 0:
state = False
return state
else:
for i in range(2,number):
if number % i == 0:
state = False
break
return state
def isPrime2(number): #Works well with big numbers that are prime
d = 2
while d*d <= number:
while (number % d) == 0:
number //= d
d += 1
if number > 1:
return True
else:
return False`
https://en.wikipedia.org/wiki/Primality_test – Ryan
考慮する必要がある最大値までの素数のリストで事前に初期化されたブルームフィルタを使用します。 –
http://compoasso.free.fr/primelistweb/page/prime/accueil_en.php – alvas