Zadanie
Twoim zadaniem jest wydrukowanie lub wydrukowanie wszystkich liczb dodatnich, w których każdy wielocyfrowy podciąg w postaci dziesiętnej jest również liczbą pierwszą. Jeśli liczba ma co najmniej 2 cyfry, oznacza to, że sama liczba również musi być liczbą pierwszą.
Przykład
6197
w sekwencji, ponieważ każdy wielocyfrowy podciąg6197
jest pierwsza, a mianowicie:61
,19
,97
,619
,197
,6197
(sam).- Zauważ, że
6
nie jest liczbą pierwszą, ale6197
wciąż znajduje się w sekwencji, ponieważ6
nie jest wielocyfrowym podciągiem6197
. 8
jest również w sekwencji, ponieważ każde wielocyfrowe podłańcuch8
jest liczbą pierwszą. Nie ma wielocyfrowego podciągu8
, więc jest to przypadek pustej prawdy .
Okular
- Obowiązują standardowe luki , z wyjątkiem tego, że wolno zakodować dane wyjściowe lub przechowywać informacje związane z danymi wyjściowymi w programie.
- Liczby na wyjściu mogą być w dowolnej kolejności .
- Liczby na wyjściu mogą mieć duplikaty.
- Możesz użyć dowolnego separatora , jeśli wybierzesz drukowanie zamiast wydruku.
- Jesteś dozwolony prefiks i / lub wyjście postfix jeśli zdecydujesz się wydrukować zamiast wyjścia.
- Separator, prefiks i postfiks nie mogą zawierać żadnych cyfr (od U + 0030 do U + 0039).
Pełna lista (58 pozycji)
1
2
3
4
5
6
7
8
9
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
113
131
137
173
179
197
311
313
317
373
379
419
431
479
613
617
619
673
719
797
971
1373
3137
3797
6131
6173
6197
9719
Odniesienie
- OEIS A131648 (niepełna lista)
Jak zawsze, prosimy o komentarze w komentarzach, które powinienem wyjaśnić.
Odpowiedzi:
Brachylog , 18 bajtów
Wypróbuj online!
Więc ... czy jestem gotowy na „nagrodę” ? :RE
źródło
05AB1E ,
1513 bajtówKod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! (może to potrwać kilka sekund).
źródło
Brachylog ,
1817151615 bajtówWypróbuj online!
-1 bajt po dyskusji z Fatalize zainspirował mnie do zobaczenia, co się stanie, jeśli zamienię te
l
i inne<
.Predykat generuje dane wyjściowe poprzez zmienną wejściową, o ile zmienna wyjściowa nie jest ograniczona. Ponieważ dozwolone są duplikaty, każda liczba jest generowana z wielokrotnością równą 2 do liczby cyfr, które są liczbami pierwszymi.
Starsza wersja:
źródło
8ḟ⟦₁{sᶠ{Ḋ|ṗ}ᵐ&}ˢ
Brachylog , 18 bajtów
Kolejne rozwiązanie Brachylog. Nie mogłem być krótszy niż roztwór Brachylog Erika The Outgolfer; ma dokładnie taką samą długość, ale zbliża się do generacji z przeciwnego kierunku.
Wygląda na to, że Niepowiązany Sznurek pobił to przez wiele postaci, którym gratuluję.
Wyjaśnienie:
Wypróbuj online!
źródło
Galaretka , 17 bajtów
Moja pierwsza galaretka odpowiedź! Zaoszczędź 3 bajty dzięki @Leaky Nun !
Wypróbuj online
Wyjaśnienie:
źródło
RÇÐf
można zastąpićÇ€T
.ṖÐfḌÆP€
można zastąpićḌḟDÆP
.Java 8, 182 bajty
Port C odpowiedzi gastropnera (gcc) , więc pamiętaj o jego głosowaniu!
Wypróbuj online.
Wyjaśnienie:
źródło
PowerShell v2 +,
107104 bajtówOstrzeżenie: Trochę powolne
Pętle od
11
do1e4
(tj.10000
) I wyciąga liczby za pomocąWhere-Object
selektora (|?{...}
). Klauzula składa się z dwóch elementów - pierwszej pętli od11
bieżącej liczby i służyWhere-Object
do wyciągania tych liczb, które tworzą podłańcuch bieżącej liczby (za pośrednictwem-match
operatora wyrażenia regularnego). Przechowujemy te podciągi w$x
. Druga część zapętla się$x
i używaWhere-Object
do wyciągania wszystkich liczb pierwszych za pomocą wyrażenia regularnego . Następnie bierzemy.count
jedno i drugie i sprawdzamy, czy są one prawdziwe-eq
. Na przykład971
będzie miał$x = (71,97,971)
i każdy z nich jest liczbą pierwszą, tak3-eq3
jest$TRUE
i dlatego971
zostanie wybrany.Ten wynik jest skonkatenowany z tablicą z zakresem
1..10
. Powstała tablica pozostawia się w potoku, a dane wyjściowe są niejawne, z domyślnie nową linią między elementami.źródło
Japt , 15 bajtów
Sprawdź to
źródło
C (gcc) ,
144142140136134132 bajtów-2 dzięki Kevin Cruijssen. -2 dzięki pułapce cat
... I zainspirowany tym, możemy uzyskać kolejne 2 bajty z pętli for.
Również bezwstydnie naciągnął raczej lepszy sprawdzian liczb pierwszych z odpowiedzi Kevina Cruijssena na kolejne -4.
Wypróbuj online!
źródło
||n<10
może być|n<10
ifor(n=1;n<1e4;n++)
może byćfor(n=0;++n<1e4;)
dla -2 bajtów.Malbolge Unshackled (wariant 20-tryt rotacyjny), 25254e7 bajtów lub 19809e7 bajtów
Rozmiar tej odpowiedzi przekracza maksymalny rozmiar programu do wysłania (eh), więc kod znajduje się w moim repozytorium GitHub (uwaga: nie kopiuj kodu za pomocą CTRL + A i CTRL + C, po prostu kliknij prawym przyciskiem myszy i kliknij „Zapisz element docelowy jako. .. ”).
Jak to uruchomić?
Może to być trudna część, ponieważ naiwny tłumacz Haskell będzie wieków na wieki, aby to uruchomić. TIO ma przyzwoitego interpretera Malbogle Unshackled, ale niestety nie będę mógł go używać (ograniczenia).
Najlepszy, jaki udało mi się znaleźć, to stały wariant szerokości rotacji 20-trit, który działa bardzo dobrze.
Aby nieco przyspieszyć tłumacza, usunąłem wszystkie kontrole z nieskrępowanego tłumacza Matthiasa Luttera.
Uwagi dotyczące wydajności
Aplikacja działała na moim komputerze około 40 minut, generując liczby HEX sekwencji. Zatrzymałem go około godziny obliczeń i zakończyłem na 0x11.
Zauważ, że ta odpowiedź różni się od mojej drugiej, ponieważ ta faktycznie oblicza liczby i można ją wykonać, aby obliczała je w nieskończoność.
Aplikacja przydziela bufor spinup, czyli około 7 gigabajtów, więc lepiej przygotuj wolną pamięć RAM.
Wariant alternatywny
Alternatywny wariant zużywa około 2 gigabajty pamięci mniej, ale generuje dane wyjściowe w postaci znaków ASCII (0 = ASCII (0x0), 10 = nowy wiersz itp.) I jest dostępny tutaj . Nie konkuruje jednak ze względu na wymagania dotyczące wyzwań
źródło
Python 3 , 118 bajtów
Wypróbuj online!
Wyjaśnienie
Ostrzeżenie: brak rzeczywistych ciągów zaangażowanych w to rozwiązanie.
źródło
Rubinowy, 81 + 8 = 89 bajtów
+8 bajtów dla
-rprime
.Zobacz na repl.it: https://repl.it/CniR/2
źródło
Perl 6 ,
47 4443 bajtówWyjaśnienie:
źródło
C #,
261249247 bajtówOszczędność 12 bajtów dzięki Leaky Nun
To kompiluje się do
Func<List<int>>
.Sformatowana wersja wygląda następująco:
źródło
false
lubtrue
użyj0>1
i0<1
Szybkie 4 , 144 bajty
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (Node.js) , 130 bajtów
czy mogę założyć, nieskończony stos
i*i<=n&&
mogą być usunięte ii*i>n
zakręty nai>=n
których zmniejsza kodu przez 9 bajtów i może przekształcić funkcję głównego do rekurencyjne: https://tio.run/##LYpBDoIwEEX33AMyAxVbXUmccgX2xkWDRYeQaSPqyrvXkrj5ef/lze7j1vHJ8bWTcPMpTQRMWjm6XJFs0/DZ@EM/ASunBmCsKtfG9/rIiJ0rIoEoJpNbKXPdx@1jx5akGEiytqdNYp2nNFr / wR @ xHkD2Rn81dpLGIGtYfLuEO0yAmH4 (119 bajtów)Wypróbuj online!
źródło
Malbolge , 1361 bajtów
Prosta i nudna wersja. Wyświetla liczby od najwyższej.
Wypróbuj online!
źródło
TI-83/84 BASIC, 124 bajty
Pętle powyżej pierwszych 10 000 liczb całkowitych. Ustawia licznik w N, aby sprawdzać każdą liczbę pierwszą podłańcucha, i int (log (A pobiera o jedną liczbę mniejszą niż liczba cyfr w bieżącej liczbie. Następnie odkładamy tę liczbę w drugiej zmiennej, abyśmy mogli przesunąć P w dół przez każdą długość podłańcuch co najmniej 2 cyfry. 10 ^ ... i AnsfPart (iPart (,,, generuje bieżący podłańcuch w celu sprawdzenia pierwotności, następnie następujące 3 linie sprawdzają pierwotność na 1 lub 0 w Ans. Jeśli podłańcuch nie jest liczbą pierwszą) , zwiększamy N, a po sprawdzeniu wszystkich podciągów, jeśli N wciąż wynosi 0, wypisujemy bieżącą liczbę.
Być może można by wprowadzić pewne poprawki, aby zwiększyć skuteczność kontroli pierwotności w tym teście? Cieszę się, że znalazłem algorytm w mniejszej liczbie bajtów niż zapisywanie danych wyjściowych bezpośrednio w formacie TI-83!
źródło
Python 3.8 (wersja wstępna) , 194 bajty
Wypróbuj online!
źródło
PHP , 135 bajtów
Wypróbuj online!
źródło