Pendahuluan / Latar Belakang
Dalam sebuah diskusi baru - baru ini di chat crypto saya ditantang untuk berdiskusi / membantu dengan tes primality Fermat dan angka-angka Carmichael. Tes ini didasarkan pada premis yang a^(p-1) mod p==1
akan selalu berlaku untuk bilangan prima p
, tetapi tidak selalu untuk komposit. Sekarang nomor carmichael pada dasarnya adalah tes musuh terburuk Fermat: Nomor yang harus Anda pilih a
untuk tidak ikut-ikutan p
mendapatkannya a^(p-1) mod p!=1
. Sekarang jika a
bukan co-prime, Anda pada dasarnya menemukan faktor non-sepelep
dan seperti kita ketahui anjak piutang bisa sangat sulit. Apalagi jika semua faktor cukup besar. Anda sekarang mungkin menyadari mengapa tes Fermat tidak sering digunakan dalam praktik (well, ada algoritma yang lebih baik), itu karena ada angka yang Anda sebagai pembela (dalam hal keamanan) harus melakukan jumlah pekerjaan yang sama seperti seorang penyerang (yaitu faktor nomor).
Jadi sekarang kita tahu mengapa angka-angka ini agak menarik, kita akan menghasilkan mereka dengan cara sesingkat mungkin, jadi kita bisa mengingat kode pembuatan jika kita membutuhkannya!
Nomor Carmichael juga dikenal sebagai A002997 di OEIS .
Sudah ada tantangan terkait , tetapi entri dari sana tidak kompetitif di sini karena mereka dioptimalkan untuk kecepatan dibandingkan dengan ukuran. Argumen yang sama berlaku untuk arah terbalik, entri di sini cenderung membuat trade-off terhadap kecepatan demi ukuran.
Spesifikasi
Memasukkan
Ini adalah tantangan urutan standar , sehingga Anda mengambil bilangan bulat positif atau non-negatif n
sebagai input. n
mungkin 0 atau 1 diindeks sesuai keinginan Anda (sebutkan).
Keluaran
Output Anda akan menjadi n
nomor carmichael -th atau n
nomor carmichael pertama , seperti yang Anda inginkan (sebutkan).
Spesifikasi
Integer x
adalah nomor Carmichael jika dan hanya jika x
komposit dan untuk semua bilangan bulat y
dengan gcd(x,y)=1
, itu menyatakan bahwa y^(x-1) mod x==1
.
Yang menang?
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
IO standar dan aturan celah berlaku.
Uji Kasus
Beberapa angka carmichael pertama adalah:
561,1105,1729,2465,2821,6601,8911,10585,15841,
29341,41041,46657,52633,62745,63973,75361,101101,
115921,126217,162401,172081,188461,252601,278545,
294409,314821,334153,340561,399001,410041,449065,
488881,512461