Jest to sekwencja A054261 .
p liczbę pierwszą obudowy jest najniższy numer, który zawiera pierwsze liczb pierwszych jak podciągów. Na przykład liczba jest najniższą liczbą zawierającą pierwsze 3 liczby pierwsze jako podciągi, co czyni ją trzecią liczbą przechowującą pierwszą liczbę.
Trywialne jest stwierdzenie, że pierwsze cztery pierwsze liczby przechowujące to , , i , ale potem staje się bardziej interesujące. Ponieważ następna liczba pierwsza to 11, kolejnym numerem przechowującym nie jest , ale ponieważ jest zdefiniowana jako najmniejsza liczba z właściwością.
Jednak prawdziwe wyzwanie pojawia się, gdy przekroczysz 11. Następna główna liczba przechowalni to . Zauważ, że pod tym numerem podciągi i nachodzą na siebie. Liczba również pokrywa się z liczbą .11
13
3
13
Łatwo jest udowodnić, że ta sekwencja rośnie, ponieważ następna liczba musi spełniać wszystkie kryteria liczby przed nią i mieć jeszcze jeden podciąg. Jednak sekwencja nie zwiększa się ściśle, jak pokazują wyniki dla n=10
i n=11
.
Wkład
Pojedyncza liczba całkowita n>0
(przypuszczam, że można ją również indeksować 0, a następnie tworzyć n>=0
)
Wydajność
Albo n
pierwsza liczba przechowująca, albo lista zawierająca pierwsze n
pierwsze liczby przechowujące.
Znalezione do tej pory liczby to:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Zauważ, że n = 10
i n = 11
są tym samym numerem, ponieważ jest najniższą liczbą, która zawiera wszystkie liczby , ale zawiera także .
Ponieważ jest to oznaczone kodem golfowym, zacznij grać w golfa! Rozwiązania z użyciem siły brute są dozwolone, ale twój kod musi działać na wszelkie dane teoretyczne (co oznacza, że nie możesz po prostu połączyć pierwszych n liczb pierwszych). Miłej gry w golfa!
P
operator tworzy wyraźne mapowanie w celu sprawdzenia liczb pierwszych w liczbie (zamiast sprawdzania, czy liczba znajduje się w tablicy liczb pierwszych)? To piękne rozwiązanie, wątpię, aby można było wykonać dowolne rozwiązanie przy użyciu mniejszej liczby poleceń.P
jest produktem. Zasadniczo mnoży wszystkie wartości z listy.Åp
Stworzy listę z pierwszegon
ilości liczb pierwszych, gdzien
jest wejścieI
w tym przypadku.å
Sprawdzi każdego numeru na tej liście liczb pierwszych, jeśli są one w aktualnej liczby nieskończonej listy, gdzie będzie dać1
za truthy i0
dla falsey. Zatem produkt zasadniczo sprawdza, czy wszystkie są zgodne z prawdą; jeśli wszystkie liczby pierwsze znajdują się w bieżącym numerze. Jeśli jakieś sąP
równe 0, wyniki również są falsey. Ale jeśli wszyscy tak są1
,P
wyniki są prawdziwe, a pętla.Δ
zatrzymuje się.1µNIÅpåP
. Dla tych, którzy nie znają 05AB1E, wyjaśnienie mojej również:1µ
- aż zmienna licznika osiągnie 1 (zaczyna się od 0,N
stopniowo zwiększaj o 1 i wykonuj:NIÅpåP
- sprawdź, czy wszystkie pierwsze liczby pierwsze <wejście> pojawiają się wN
i , jeśli tak, zwiększaj automatycznie zmienną licznika. Zwraca końcową wartość N.X
zamiast1
, ponieważ posiadał powodów), ale przeszedłem do tego ponieważ nigdy nie miałem okazji, aby korzystać∞
przed :)Galaretka , 11 bajtów
Wypróbuj online!
Prosta brutalna siła. Nie jestem całkowicie pewien, jak
#
działa arity, więc może być miejsce na ulepszenia.Jak to działa
źródło
wⱮẠ¥1#ÆN€
oszczędza dwa bajty.Java 8, 143 bajty
Wypróbuj online.
UWAGI:
n=7
.n=9
względu na limit wielkościint
(maksymalnie2,147,483,647
).int
na along
, maksimum jest zwiększane do wyjścia poniżej9,223,372,036,854,775,807
(n=20
myślę, że?)java.math.BigInteger
maksimum można zwiększyć do dowolnego rozmiaru (teoretycznie), ale będzie to około +200 bajtów przynajmniej ze względu na szczegółowośćjava.math.BigInteger
metod.Wyjaśnienie:
źródło
JavaScript (ES6),
105 ... 9291 bajtówWypróbuj online!
W jaki sposób?
Skomentował
źródło
Rubinowy , 58 bajtów
Wypróbuj online!
Brute-force, działa do 7 w TIO.
źródło
Pyth , 14 bajtów
Wypróbuj online!
Pyth , 15 bajtów
Nieco szybciej, ale 1 bajt dłużej.
Wypróbuj online!
źródło
Galaretka , 14 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 42 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Zbuduj pierwsze
n
liczby pierwsze, dzieląc próbnie wszystkie liczby całkowite przez wszystkie wcześniej znalezione liczby pierwsze.Zapętlaj wszystkie liczby całkowite, aż znajdziemy taki, który zawiera wszystkie liczby pierwsze jako podłańcuchy.
Rzuć wynik na ciąg i niejawnie wydrukuj.
Prędkość programu może zostać podwojona kosztem bajt zastępując ostatnią
≦⊕η
z≦⁺²η
ale to wciąż zbyt wolno, aby obliczyćn>6
.źródło
Perl 6 ,
6359 bajtów-4 bajty dzięki nwellnhof
Wypróbuj online!
Brute force rozwiązania, które przekraczają limit czasu dla TIO dla liczb powyżej 5, ale jestem pewien, że działa poprawnie. Znajduje pierwszą liczbę dodatnią, która zawiera pierwsze
n
liczby pierwsze. Oto rozwiązanie, na które nie ma czasun=6
.Wyjaśnienie:
źródło
Python 2 , 131 bajtów
Wypróbuj online!
f
jest funkcją.źródło
Python 2 , 91 bajtów
Wypróbuj online!
źródło
SAS, 149 bajtów
Dane wejściowe są wprowadzane zgodnie z
cards;
instrukcją:Wysyła zestaw danych
p
, z wynikiemv
, z wierszem wyjściowym dla każdej wartości wejściowej. Powinien technicznie działać dla wszystkich podanych przypadków testowych (maksymalna liczba całkowita z pełną precyzją w SAS wynosi 9 007,199,254,740,992), ale poddałem się, pozwalając mu myśleć przez 5 minut na n = 8.Wyjaśnienie:
źródło
Haskell , 102 bajty
Wypróbuj online!
Wyjaśnienie / Niegolfowany
Ponieważ już
Data.List
zaimportowaliśmy, równie dobrze możemy go użyć: zamiast starego dobregotake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
możemy użyć innego sposobu generowania wszystkich liczb pierwszych, których potrzebujemy. Mianowicie, generujemy wystarczającą ilość kompozytów i używamy ich razem z(\\)
:n*n
źródło
Japt,
2018 bajtówDaleko od mojej najlepszej pracy, po prostu cieszyłem się, że mogę ją uruchomić po dniu, który miałem. Jestem pewien, że skończę później, popijając go alkoholem!
Spróbuj - potrzeba 13 sekund, aby uruchomić dane wejściowe
7
, po czym rzuca niepewnie (zaktualizowana wersja jest5
dla mnie dostępna, ale może to być po prostu mój telefon).źródło
F.h()
na własną rękę i wydaje się, że jest zepsuty; ETH musiał coś zmienić.