非負の整数N
を指定すると、すべての最初のN
素数の基底に対する強い擬似素数である最小の奇数の正の整数を出力します。
これは、OEISシーケンスA014233です。
テストケース(1インデックス付き)
1 2047
2 1373653
3 25326001
4 3215031751
5 2152302898747
6 3474749660383
7 341550071728321
8 341550071728321
9 3825123056546413051
10 3825123056546413051
11 3825123056546413051
12 318665857834031151167461
13 3317044064679887385961981
のテストケースはN > 13
、これらの値がまだ見つかっていないため利用できません。シーケンス内の次の用語を見つけることができた場合は、必ずOEISに提出してください!
ルール
N
インデックスがゼロまたはインデックスが1の値を選択できます。- ソリューションが言語の整数範囲内で表現可能な値(つまり
N = 12
、符号なし64ビット整数まで)でのみ動作することは許容されますが、ソリューションは、言語が任意の長さの整数をサポートするという前提で、理論的には入力に対して動作する必要があります。
バックグラウンド
正の整数は、奇数のx
形式x = d*2^s
で記述できますd
。d
そして、商が2で割り切れなくなるまで2でs
繰り返し除算n
することで計算できます。これd
はその最終商でありs
、2が除算される回数ですn
。
正の整数n
が素数の場合、フェルマーの小定理は次のように述べます。
任意の有限体 Z/pZ
(どこにp
素数がある)でも、の平方根1
は1
and -1
(または同等に1
and p-1
)のみです。
これら3つの事実を使用して、次の2つのステートメントのいずれかが素数に対して真でなければならないことを証明できますn
(d*2^s = n-1
およびr
はの整数です[0, s)
)。
ミラー-ラビン素数判定法は、上記請求項のcontrapositiveを試験することによって動作する。ベースがあればa
、上記の両方の条件が偽であるように、次いで、n
素数ではありません。そのベースa
は証人と呼ばれます。
さて、すべてのベースをテスト[1, n)
することは、大規模な計算時間において非常に高価になりますn
。Miller-Rabinテストには、有限フィールドでランダムに選択された一部のベースのみをテストする確率的バリアントがあります。ただし、素数のa
ベースのみをテストするだけで十分であるため、効率的で決定論的な方法でテストを実行できることがわかりました。実際、すべての素数ベースをテストする必要があるわけではありません。特定の数だけが必要であり、その数は素数性をテストする値のサイズに依存します。
不十分な数の素数ベースがテストされると、テストは偽陽性を生成する可能性があります。テストがその複合性を証明できない場合、奇数の複合整数です。具体的には、基数a
が奇数の合成数の合成性を証明できない場合、その数はbaseへの強い擬似素数と呼ばれa
ます。この課題は、N
th個の素数以下のすべての基底に対して強い擬似プライムである奇数の合成数を見つけることです(これは、th個の素数以下のすべての素数の基底に対して強い疑似素数であると言うことに相当しますN
) 。