Jeśli kiedykolwiek nauczyłeś się liczb pierwszych w klasie matematycznej, prawdopodobnie w pewnym momencie musiałeś ustalić, czy liczba jest liczbą pierwszą. Prawdopodobnie popełniłeś błąd podczas nauki, na przykład myląc 39 z liczbą pierwszą. Cóż, nie martw się, ponieważ 39 jest półpierwszym, tzn. Że jest iloczynem dwóch liczb pierwszych.
Podobnie możemy zdefiniować k- prawie pierwszą jako iloczyn k liczb pierwszych. Na przykład 40 to czwarta czwarta prawie prawie pierwsza; 40 = 5 * 2 * 2 * 2, iloczyn 4 czynników.
Twoim zadaniem jest napisanie programu / funkcji, która przyjmuje dwie liczby całkowite n i k jako dane wejściowe i wyjściowe / zwraca n- tą k -najbliższą liczbę pierwszą. To jest golf golfowy, więc wygrywa najkrótszy program w bajtach.
Przypadki testowe
n, k => output
n, 1 => the nth prime number
1, 1 => 2
3, 1 => 5
1, 2 => 4
3, 2 => 9
5, 3 => 27
Różne
Musisz wygenerować liczby pierwsze w jakikolwiek inny sposób niż prosty formularz zamknięty, jeśli taki formularz zamknięty istnieje.
f
pod względemf[n,1]
było poprawne, ponieważ listy liczb prawie pierwszych zawierają liczby nieparzyste (np. Dwa ostatnie przykłady, których nie można wyrazić jako iloczyn potęgi dwóch i liczby pierwszej). (I to też mówif[n,1] == 2*f[n,1]
.)Odpowiedzi:
Pyth, 9 bajtów
Wyjaśnienie
Wypróbuj tutaj!
Lub wypróbuj zestaw testowy!
źródło
Brachylog , 9 bajtów
Pokonanie @sundar przy użyciu o połowę mniej bajtów
Wyjaśnienie
Wypróbuj online!
źródło
Pyke (zatwierdzenie 29), 8 bajtów (niekonkurencyjny)
Wyjaśnienie:
źródło
Julia,
84785957 bajtówJest to funkcja rekurencyjna, która przyjmuje dwie liczby całkowite i zwraca liczbę całkowitą. Podejście polega tutaj na sprawdzeniu sumy wykładników wykładnika pierwszego względem
k
.Nie golfowany:
źródło
Galaretka, 9 bajtów
Wypróbuj online!
Jak to działa
źródło
Brachylog , 18 bajtów
Wypróbuj online!
źródło
Mathematica,
5651 bajtówOstrzeżenie: jest to teoretyczne. Nie uruchamiaj dla żadnych wartości> 4. Zamień 2 ^ ## na bardziej wydajne wyrażenie.
źródło
n=1
.PrimeOmega[1]
ocenia na0
,&&#>1
jest zbędne.Mathematica,
5349 bajtówGeneruje listę liczb całkowitych na podstawie luźnej górnej granicy.
PrimeOmega
zlicza czynniki pierwsze z krotnością, k- pierwsza liczba pierwszaCases
jest pobierana z listy, a zwracany jest n- ty członek tego podzbioru.źródło
2^Sequence[1,2]
dowiedzieć się, dlaczego to drugie zawodzi.Haskell, 88 bajtów
Prawdopodobnie można grać w golfa o wiele więcej, ponieważ wciąż jestem nowicjuszem w Haskell. Funkcja
q
zwraca liczbę czynników swojego argumentu if
wykorzystuje ją do pobranianth
elementu listy utworzonej ze wszystkich liczb zawierającychk
czynniki.źródło
MATL, 14 bajtów
Wypróbuj na MATL Online
źródło
Python 3, 100 bajtów
Jest to bardzo prosta funkcja brutalnej siły. Sprawdza każdy numer począwszy od 2 z
sympy
„sfactorint
funkcję aż znalazłan
k
-almost liczb pierwszych, w którym momencie, funkcja zwracan
th z nich.Nie golfowany:
Używam,
sum(factorint(a).values())
ponieważfactorint
zwraca słownikfactor: exponent
par. Chwytanie wartości słownika (wykładników) i ich sumowanie mówi mi, ile jest czynników pierwszych, a co zak
tym idziek
- prawie pierwsza.źródło
Python 2 , 76 bajtów
Wypróbuj online!
źródło