な獣のトップレベルの簡単な擬似コードです:
def printTwinPrimes(count):
currNum = 3
while count > 0:
if isPrime(currNum) and isPrime(currNum + 2):
print currnum, currnum + 2
count = count - 1
currNum = currNum + 2
我々は4
であるため2,4
はツインプライムペアとして不可能である知っているので、それは単に(3
から始まります複合)。それぞれの可能性について、それはツインプライムペアを構成するかどうかをチェックし、そうであればプリントします。
実数コードに変換する以外に、isPrime()
を作成することは、ネット上に無数の例があります。
完全を期すため、ここでは簡単なものでは初心者のための最も効率的なものの、十分な決して、です:
def isPrime(num):
if num < 2:
return false
root = 2
while root * root <= num:
if num % root == 0:
return false
root = root + 1
return true
あなたが 2よりもその全ての素数が他の事実を使用して、それがより効率的にすることができますがまたは3つの形式6n±1, n >= 1
(A)である:
def isPrime(num):
if num < 2: return false
if num == 2 or num == 3: return true
if num % 2 == 0 or num % 3 == 0: return false
if num % 6 is neither 1 nor 5: return false
root = 5
adder = 2 # initial adder 2, 5 -> 7
while root * root <= num:
if num % root == 0:
return false
root = root + adder # checks 5, 7, 11, 13, 17, 19, ...
adder = 6 - adder # because alternate 2, 4 to give 6n±1
return true
(A)あなたは6により任意の負でない数を分割し、余りが0,2又は4である場合、それはいても、したがって、非プライム(2ここで、例外ケースである):
6n + 0 = 2(3n + 0), an even number.
6n + 2 = 2(3n + 1), an even number.
6n + 4 = 2(3n + 2), an even number.
余りが3である場合、それは(3ここで、例外ケースである)3で割り切れるしたがって非素数である:
6n + 3 = 3(2n + 1), a multiple of three.
だけ余り1及び5を残し、それらの数字は、そのフォームの全てであることを6n±1
。
複数の数字を書き込む予定があるとすれば、1つの数字だけを印刷できるデザインは、最初から最後のように思えます。 – hvd
そして、あなたの素数検出アルゴリズムはどこですか?私はあなたがウェブ上で非常に簡単に見つけることができると確信しています。そして、ペア素数だけを検出することにそれを適応させることが唯一の問題です。 –