Wstęp / Tło
W niedawnej dyskusji w tym krypto czat I została zakwestionowana, aby omówić / pomoc z Test pierwszości Fermata i numery Carmichael. Ten test opiera się na założeniu, że a^(p-1) mod p==1
zawsze będzie dotyczyć liczb pierwszych p
, ale nie zawsze kompozytów. Teraz liczba Carmichael jest zasadniczo Fermata Test najgorszym wrogiem: Number, dla którego trzeba wybrać a
się nie współ-prime z p
dostać a^(p-1) mod p!=1
. Teraz, jeśli a
nie jest to co-prime, w zasadzie znalazłeś nietrywialny czynnikp
i jak wszyscy wiemy faktoring może być dość trudny. Zwłaszcza jeśli wszystkie czynniki są wystarczająco duże. Teraz możesz sobie uświadomić, dlaczego test Fermata nie jest tak często wykorzystywany w praktyce (istnieją lepsze algorytmy), ponieważ istnieją liczby, dla których jako obrońca (pod względem bezpieczeństwa) musiałbyś wykonać podobną pracę jak atakujący (mianowicie współczynnik liczby).
Teraz, gdy wiemy, dlaczego te liczby są nieco fascynujące, wygenerujemy je w możliwie najkrótszy sposób, abyśmy mogli zapamiętać kod generujący, jeśli kiedykolwiek będziemy go potrzebować!
Numery Carmichael są również znane jako A002997 w OEIS .
Istnieje już pokrewne wyzwanie , ale stamtąd zgłoszenia nie są tutaj konkurencyjne, ponieważ są zoptymalizowane pod kątem szybkości, a nie wielkości. Ten sam argument dotyczy odwrotnego kierunku, wpisy tutaj prawdopodobnie będą kompromisowe względem prędkości na korzyść wielkości.
Specyfikacja
Wejście
To jest standard sekwencjawyzwanie, więc bierzesz dodatnią lub nieujemną liczbę całkowitą n
jako dane wejściowe. n
mogą być indeksowane 0 lub 1 według własnego uznania (proszę wskazać).
Wynik
Twój wynik będzie albo n
-tym numerem karmyela, albo pierwszymi n
liczbami carmichaela, jak wolisz (proszę wskazać).
Specyfikacja
Liczba całkowita x
jest liczbą Carmichaela wtedy i tylko wtedy, gdy x
jest złożona i dla wszystkich liczb całkowitych y
z gcd(x,y)=1
nią, to ją trzyma y^(x-1) mod x==1
.
Kto wygrywa?
To jest golf-golf, więc wygrywa najkrótszy kod w bajcie!
Obowiązują standardowe zasady IO i luki.
Przypadki testowe
Pierwsze kilka liczb Carmichael to:
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