Biorąc pod uwagę liczbę n, wydrukuj n-tą pierwszą liczbę Fermata, gdzie liczby Fermata mają postać 2 2 k +1. Kod ten powinien teoretycznie praca dla każdego n (czyli nie hardcode go), choć nie należy się spodziewać, aby zakończyć dla n> 4. (Należy nie powrócić 4294967297 dla n = 5, jak 4294967297 nie jest liczbą pierwszą).
Zauważ, że chociaż wszystkie liczby pierwsze Fermata mają postać 2 2 n +1, nie wszystkie liczby w postaci 2 2 n +1 są pierwsze. Celem tego wyzwania jest zwrócenie n-tej liczby pierwszej.
Przypadki testowe
0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537
Zasady
- Standardowe luki są niedozwolone.
- Zarówno indeksowanie 0, jak i indeksowanie 1 są dopuszczalne.
- To jest golf golfowy , wygrana o najniższej liczbie bajtów.
Powiązane: Konstruowalne n-gony
2^(2^n) + 1
, gdzien
jest wejście? Jest to zgodne z twoimi przypadkami testowymi (które, jak wiemy, są już pierwsze, więc nie musisz tego sprawdzać). I nie spodziewasz się, że program będzie działał tam, gdzie n> 4 (a n = 5 jest pierwszą nie-pierwszą).n=1:4
. Wszystkie liczby pierwsze Fermata mają postać2^2^n+1
, ale to nie znaczy, że wszystkie liczby postaci2^2^n+1
są rzeczywiście pierwsze. Tak jest na przykładn=1:4
, ale nien=5
na przykład.n
a dane wyjściowe muszą mieć formę2^(2^n)+1
. Jeśli użyjesz różnych zmiennych dla danych wejściowych i wykładnika, pewne zamieszanie może zostać zmniejszone. Może to również pomóc, jeśli wyraźnie oświadczysz, że „n = 5 nie musi generować danych w rozsądnym czasie, ale nie może generować 4294967297”Odpowiedzi:
Python 2 , 53 bajty
Wypróbuj online!
Używa testu Pépina .
Python 2 , 54 bajty
Wypróbuj online!
źródło
Galaretka ,
1311 bajtówWykorzystuje indeksowanie 1.
Wypróbuj online!
Jak to działa
źródło
ṛ
do wyczyszczenia wyniku ... TILÆẸ
zamiast2*
jednej liczby całkowitej ... TILPerl 6 ,
4542 bajtówSpróbuj
Spróbuj
Rozszerzony:
źródło
Mathematica, 56 bajtów
Wypróbuj online!
źródło
Pyth , 14 bajtów
Wypróbuj online!
Wykorzystuje indeksowanie 1.
źródło
Pyth , 14 bajtów
Wypróbuj online.
Główna idea „zapożyczona” z odpowiedzi xnor w innym pytaniu
źródło
05AB1E , 8 bajtów
Kod:
Wyniki są indeksowane 1.
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie:
źródło
JavaScript,
1246 bajtówWiększość kodu jest pobierana przez kontrolę wstępną, która jest stąd .
źródło
Dyalog APL (29 znaków)
Jestem prawie pewien, że można to poprawić.
Jest to funkcja rekurencyjna, która sprawdza liczbę dzielników 1 + 2 ^ 2 ^ ⍵, gdzie ⍵ jest właściwym argumentem funkcji. Jeśli liczba dzielników wynosi 2, liczba jest liczbą pierwszą i zwraca ją, w przeciwnym razie wywołuje funkcję ponownie, używając ⍵ + 1 jako poprawnego argumentu.
Przykład
Tutaj wywołuję funkcję na każdym z ⍳4 (liczby 1-4). Dotyczy to każdej liczby z kolei.
źródło
Haskell , 61 bajtów
Wypróbuj online!
Indeks oparty na 0
Wyjaśnienie
źródło