To pytanie będzie niespodzianką w znalezieniu n
czwartej liczby pierwszej.
Wyzwanie
Musisz napisać program, który pobierze jedno dane wejściowe n
i wyświetli n
pierwszą liczbę pierwszą, której reprezentacja dziesiętna zawiera dziesiętną reprezentację n
jako podtekst.
Zmieszany? Oto kilka przykładów.
n=1
Primes: 2, 3, 5, 7, 11
^1 first prime that contains a 1
Output: 11
n=2
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 second prime that contains a 2
Output: 23
n=3
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 ^3 third prime that contains a 3
Output: 23
n=10
Primes: 2, 3, 5, 7, 11, ..., 97, 101, 103, 107, 109, ..., 997, 1009, 1013, 1019, 1021, 1031, 1033
^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 tenth prime that contains a 10
Output: 1033
To jest golf golfowy , więc wygrywa najmniejsza liczba bajtów.
Jeśli coś jest mylące, zostaw komentarz.
Hot Network Questions
liście.Odpowiedzi:
05AB1E , 8 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
Pyth - 11 bajtów
Pakiet testowy .
źródło
Python 2,
676562 bajtówPrzetestuj na Ideone .
Jak to działa
Używamy następstwa twierdzenia Wilsona :
Przez cały czas zmienna p jest równa kwadratowi silni m - 1 .
Jeśli k <n ,
k/n
da 0, a f jest wywoływane rekurencyjnie. m jest zwiększane, p jest aktualizowane, a k jest zwiększane tylko wtedy, gdy m jest liczbą pierwszą zawierającą n .To ostatnie osiąga się przez dodanie wyniku
p%m*(`n`in`m`)
do k . Zgodnie z twierdzeniem Wilsona, jeśli m jest liczbą pierwszą,p%m
zwraca 1 , a jeśli nie, zwraca 0 .Gdy k osiągnie n , znaleźliśmy q , n- ta liczba pierwsza zawierająca n .
Jesteśmy w trakcie następnego połączenia podczas sprawdzania, więc m = q + 1 .
k/n
zwróci 1 , a operatorzy bitowi-~
zwiększą ten numer jeden raz dla każdego wywołania funkcji. Ponieważ potrzeba q - 1 wywołań do f, aby zwiększyć m od 2 do q + 1 , najbardziej zewnętrzne wywołanie do f zwróci 1 + q - 1 = q , zgodnie z przeznaczeniem.źródło
Bash, 27 bajtów
primes
pochodzi z bsdgames.Pobiera dane wejściowe jako argument wiersza poleceń i wyświetla dane wyjściowe w STDOUT.
źródło
Galaretka , 13 bajtów
Wypróbuj online!
źródło
Mathematica, 75 bajtów
Nadal można grać w golfa.
źródło
Java,
194180173171112 bajtówKod:
Nie golfowany:
źródło
P {
iString[] s
. I 2. obecnie podajesz tylko dane wyjściowe10
, ale wyzwaniem dla gry w golfa było wzięcie danych wejściowychn
i podanie odpowiednich danych wyjściowych na podstawie tych danych wejściowych. Może Cię to zainteresować: Wskazówki dotyczące gry w golfa w Javie.Rubin,
6261 bajtówWymaga
-rprime
flagi (+8 bajtów).źródło
Julia,
6160 bajtówWypróbuj online!
źródło
MATL , 18 bajtów
Wypróbuj online!
Wyjaśnienie
To generuje liczby pierwsze w kolejności za pomocą
do...while
pętli. Dla każdej liczby pierwszej testowany jest warunek (i liczba pierwsza jest konsumowana). Jeśli jest spełniony, ta liczba pierwsza jest ponownie umieszczana na stosie. Liczba elementów na stosie jest używana do zliczenia liczby kwalifikujących liczb pierwszych, które znaleźliśmy. Gdy jest ich wystarczająco dużo, wyświetlana jest ostatnia.źródło
Pyke, 15 bajtów
Wypróbuj tutaj!
źródło
Bash + GNU coreutils, 66 bajtów
W przeciwieństwie do rozwiązania @ Doorknob, ten potrzebuje tylko rzeczy, które są zainstalowane na każdym systemie GNU / Linux:
źródło
seq 1e20|factor|grep -Po "(?<=: )\d*$2\d$"|sed $1q\;d
for((...)){
tym musi być spacja lub znak nowej linii, więc nie ma to znaczenia. Przed zamknięciem}
musi być;
znak nowej linii, więc to też nie ma znaczenia.Perl 6 , 41 bajtów
Wyjaśnienie:
Test:
źródło
Java 8,
192183181171 bajtów (pełny program)Wypróbuj online.
Wyjaśnienie:
Java 8, 105 bajtów (funkcja lambda)
Wypróbuj online.
To samo co powyżej, ale z
n
wejściem całkowitym i bez pełnych informacji o klasie.źródło
&&
z&
i usunąć?
z regexp.&&
i&
z jakiegoś powodu ..Clojure, 118 bajtów
Po prostu dostaje n-ty element leniwej, nieskończonej sekwencji liczb, które są liczbą pierwszą i mają
n
w swojej reprezentacji łańcuchowej.Możesz spróbować tutaj: https://ideone.com/ioBJjt
źródło
Właściwie 16 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
PowerShell v2 +,
10899 bajtówO nie. Brak jakiegokolwiek wbudowanego obliczania / sprawdzania liczb pierwszych naprawdę tutaj boli.
Pobiera dane wejściowe
$n
, wchodzi w nieskończonąfor()
pętlę. W każdej iteracji używamyfor
pętli owiniętej wokół sprawdzania liczb regularnych wyrażeń regularnych PowerShell (h / t do Martina), aby przekształcić ją w generator liczb pierwszych, zwiększając za$i
każdym razem pętlę. (Na przykład, uruchomienie właśniefor(){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$i}}
spowoduje wyjście2, 3, 5, 7...
oddzielone znakami nowej linii).Następnie wystarczy
-like
sprawdzić, czy$n
gdzieś jest$i
, i zwiększyć nasz licznik$o
. Jeśli osiągnęliśmy, gdzie$n
i$o
jesteśmy równi, wydajność$i
iexit
. W przeciwnym razie przejdziemy dalej,for
aby znaleźć następną liczbę pierwszą, a proces się powtórzy.źródło
APL (NARS), 39 znaków, 78 bajtów
1π jest następną liczbą pierwszą ...; test:
ale to już przy 20 wychodzi z miejsca na stosie ... Zamiast tego wydaje się to w porządku, nawet jeśli ma trochę więcej długości (61 znaków)
źródło
Dodaj ++ , 36 bajtów
Wypróbuj online!
źródło
Japt
-h
,151311 bajtówSpróbuj
źródło