私は、pythonが「汚れとして遅い」ことを知っていますが、素数を見つける高速かつ効率的なプログラムを作りたいと思います。
-DoesこのプリントアウトALL素数:pythonで素数を見つける
num = 5 #Start at five, 2 and 3 are printed manually and 4 is a multiple of 2
print("2")
print("3")
def isPrime(n):
#It uses the fact that a prime (except 2 and 3) is of form 6k - 1 or 6k + 1 and looks only at divisors of this form.
i = 5
w = 2
while (i * i <= n): #You only need to check up too the square root of n
if (n % i == 0): #If n is divisable by i, it is not a prime
return False
i += w
w = 6 - w
return True #If it isn´t ruled out by now, it is a prime
while True:
if ((num % 2 != 0) and (num % 3 != 0)): #save time, only run the function of numbers that are not multiples of 2 or 3
if (isPrime(num) == True):
print(num) #print the now proved prime out to the screen
num += 2 #You only need to check odd numbers
が今私の質問に来る:これは私が持っているものでしょうか?
- これは素数ではない数値を出力しますか?
- もっと効率的な方法があるでしょうか? - これはどこまで行くのですか(Pythonの制限)、上限を上げる方法はありますか? python 2.7.12
非常に多くの関連はなく、正確な複製:http://stackoverflow.com/q/2068372/1639625 –
あなただけの教会に歩くことができませんPythonの* "それは汚れとして遅い" *と言います。 –
* Miller-Rabin *フィルタリング、* Pocklingtonテスト*などを使うことができます。 –