フランソワプロスにちなんで名付けられたプロス番号は、次のように表現できる番号です。
N = k * 2^n + 1
where k
は奇数の正の整数で、n
はのような正の整数です2^n > k
。より具体的な例を使用してみましょう。テイク3. 3はProth番号です。
(1 * 2^1) + 1
そして2^1 > 1
満足しています。5はProth番号でもあります。
(1 * 2^2) + 1
そして2^2 > 1
満足しています。ただし、7はProth番号ではありません。フォームに書き込む唯一の方法N = k * 2^n + 1
は
(3 * 2^1) + 1
そして2^1 > 3
満足していません。
あなたの挑戦は非常に単純です:あなたは、正の整数を与えられて、それがプロス数であるかどうかを決定するプログラムまたは関数を書かなければなりません。入力は合理的な形式で行うことができ、Proth番号の場合は真実の値を出力し、そうでない場合は偽の値を出力する必要があります。言語に「Proth-number detection」機能がある場合は、それらを使用できます。
テストIO
1000までの最初の46個のProth番号を以下に示します。(A080075)
3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97, 113, 129, 145, 161, 177, 193, 209, 225, 241, 257, 289, 321, 353, 385, 417, 449, 481, 513, 545, 577, 609, 641, 673, 705, 737, 769, 801, 833, 865, 897, 929, 961, 993
他のすべての有効な入力は、偽の値を与える必要があります。
いつものように、これはコードゴルフなので、標準的な抜け穴が適用され、バイト単位の最短回答が勝ちます!
数論の面白い事実:
メルセンヌ素数ではない最大の知られている素数は19249 * 2^13018586 + 1
であり、これは偶然にもプロス数です!