Giriş / Arka Plan
Bir de son tartışmada yer kripto sohbet Birlikte / yardım görüşmek üzere meydan Fermat asallık testi ve Carmichael numaraları. Bu test a^(p-1) mod p==1
her zaman primler için geçerli olacak p
, ancak her zaman kompozitler için geçerli olmayan öncüllere dayanmaktadır . Bir dizi kendisi için: Artık bir Carmichael numarası Fermat testi en büyük düşmanı temelde zorunda almak a
değil eş-asal birlikte olmak p
için a^(p-1) mod p!=1
. Şimdi eğer a
eş-başlı değilse , aslında önemsiz olmayan bir faktör buldunuzp
ve hepimizin bildiği gibi faktoring oldukça zor olabilir. Özellikle tüm faktörler yeterince büyükse. Artık Fermat testinin pratikte neden sıklıkla kullanılmadığını (daha iyi algoritmalar var) fark edebilirsiniz, çünkü bir savunma oyuncusu olarak (güvenlik açısından) benzer miktarda iş yapmak zorunda kalacaksınız. bir saldırgan (yani sayı faktörü).
Şimdi bu rakamların neden biraz büyüleyici olduğunu bildiğimize göre , bunları mümkün olan en kısa şekilde üreteceğiz, böylece herhangi bir şeye ihtiyacımız olursa, üreten kodu ezberleyebiliriz!
Carmichael sayıları OEIS'de A002997 olarak da bilinir .
Orada bir olan ilgili sorun zaten, ama boyutu aksine onlar hız için optimize edilmiştir, çünkü oradan girişleri burada rekabetçi değil. Aynı argüman ters yön için de geçerlidir, buradaki girişlerin büyüklük lehine hıza karşı değiş tokuş yapması muhtemeldir.
Şartname
Giriş
Bu bir standart sıran
giriş olarak pozitif veya negatif olmayan bir tam sayı alırsınız . n
tercih ettiğiniz gibi 0- veya 1 dizinli olabilir (lütfen belirtin).
Çıktı
Çıktınız ya tercih ettiğiniz gibi n
-th carmichael numarası veya ilk n
carmichael numaraları olacaktır (lütfen belirtiniz).
Şartname
Bir tamsayı x
bir Carmichael sayısı ise ve sadece eğer x
kompozit ve tüm tamsayılar için y
birlikte gcd(x,y)=1
, bu tutar y^(x-1) mod x==1
.
Kim kazanır?
Bu kod golf, bayttaki en kısa kod kazanır!
Standart IO ve boşluk deliği kuralları geçerlidir.
Test Durumları
İlk birkaç carmichael numarası:
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