Sebuah nomor Proth , dinamai François Proth, adalah angka yang dapat dinyatakan sebagai
N = k * 2^n + 1
Di mana k
bilangan bulat positif ganjil dan n
bilangan bulat positif sehingga 2^n > k
. Mari kita gunakan contoh yang lebih konkret. Ambil 3. 3 adalah nomor Proth karena dapat ditulis sebagai
(1 * 2^1) + 1
dan 2^1 > 1
puas. 5 Juga merupakan nomor Proth karena dapat ditulis sebagai
(1 * 2^2) + 1
dan 2^2 > 1
puas. Namun, 7 bukan nomor Proth karena satu-satunya cara untuk menuliskannya N = k * 2^n + 1
adalah
(3 * 2^1) + 1
dan 2^1 > 3
tidak puas.
Tantangan Anda cukup sederhana: Anda harus menulis sebuah program atau fungsi yang, diberi bilangan bulat postive, menentukan apakah itu nomor Proth atau tidak. Anda dapat mengambil input dalam format apa pun yang masuk akal, dan akan menghasilkan nilai kebenaran jika itu adalah nomor Proth dan nilai palsu jika bukan. Jika bahasa Anda memiliki fungsi "Deteksi nomor proth", Anda dapat menggunakannya.
Tes IO
Berikut adalah 46 nomor Proth pertama hingga 1000. ( 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
Setiap input yang valid lainnya harus memberikan nilai palsu.
Seperti biasa, ini adalah kode-golf, jadi celah standar berlaku, dan jawaban terpendek dalam byte menang!
Teori bilangan menyenangkan fakta:
Perdana diketahui terbesar yang bukan Perdana Mersenne adalah 19249 * 2^13018586 + 1
, yang kebetulan juga menjadi nomor Proth!