Pierwsza klastra liczby całkowitej N wyższa niż 2 określa się jako parę utworzoną przez najwyższe pierwsza ściśle niższe niż N , a najniższa pierwsza ściśle większa niż N .
Zauważ, że zgodnie z powyższą definicją, jeśli liczba całkowita jest samą liczbą pierwszą, to jej klaster liczb pierwszych jest parą liczb pierwszych poprzedzających i następujących po niej.
Zadanie
Biorąc pod uwagę dwie liczby całkowite N , M ( N, M ≥ 3 ), wyprowadza wartość prawda / fałsz na podstawie tego, czy N i M mają tę samą grupę podstawową.
To jest golf golfowy , więc celem jest jak największe zmniejszenie liczby bajtów. W ten sposób wygrywa najkrótszy kod w każdym języku programowania .
Przypadki testowe / przykłady
Na przykład pierwsza grupa 9 to [7, 11]
, ponieważ:
- 7 jest najwyższą liczbą pierwszą ściśle niższą niż 9 , a
- 11 jest najniższą liczbą ściśle wyższą niż 9 .
Podobnie, główna grupa 67 to [61, 71]
(zauważ, że 67 jest liczbą pierwszą).
Prawdziwe pary
8, 10 20, 22 65, 65 73, 73 86, 84 326,318 513, 518
Pary Falsy
4, 5 6, 8 409, 401 348,347 419, 418 311, 313 326, 305
źródło
Odpowiedzi:
Galaretka ,
64354 bajtówWypróbuj online! lub Wypróbuj wszystkie przypadki testowe .
Jak to działa
Działa, ponieważ dwie liczby mają różne klastry liczb pierwszych, jeśli między nimi jest liczba pierwsza lub każda z nich jest liczbą pierwszą; chyba że obie liczby są takie same, w którym to przypadku i tak
E
zwraca1
(wszystkie elementy w tablicy pojedynczych elementów są równe).źródło
Perl 6 , 52 bajtów
Sprawdź to
Rozszerzony:
źródło
Python 3 ,
1039591 bajtówWypróbuj online!
źródło
Rubin ,
5754 bajtówWypróbuj online!
Używa okropnego testu pierwotności wyrażenia regularnego z mojej odpowiedzi (o której zapomniałem, dopóki nie kliknąłem) na powiązane pytanie Czy ta liczba jest liczbą pierwszą? . Ponieważ mamy N, M ≥ 3, czek dla 1 można usunąć ze wzoru, dzięki czemu liczba bajtów jest mniejsza niż przy użyciu wbudowanego.
Uwaga: Test pierwotności wyrażenia regularnego jest patologicznie, przezabawnie nieefektywny. Wydaje mi się, że jest to przynajmniej O (n!), Chociaż nie mam teraz czasu, aby to rozgryźć. Sprawdzanie 100,001 zajęło mu dwanaście sekund, a następnie szlifowałem przez pięć lub dziesięć minut na 1000,001, zanim go anulowałem. Używaj / wykorzystuj na własne ryzyko.
źródło
n²
. Wiesz,100001! = 2824257650254427477772164512240315763832679701040485762827423875723843380680572028502730496931545301922349718873479336571104510933085749261906300669827923360329777024436472705878118321875571799283167659071802605510878659379955675120386166847407407122463765792082065493877636247683663198828626954833262077780844919163487776145463353109634071852657157707925315037717734498612061347682956332369235999129371094504360348686870713719732258380465223614176068 ... (Warning: The output exceeded 128 KiB and was truncated.)
co potrwa tysiąclecia.Siatkówka , 58 bajtów
Wypróbuj online! Wyjaśnienie:
Jeśli oba wejścia są takie same, po prostu usuń wszystko i przejdź do wyjścia 1 na końcu.
Konwertuj na unary.
Sortuj w kolejności.
Rozwiń zakres wszystkich liczb.
Usuń wszystkie liczby złożone.
Jeśli nie ma już liczb, wyjmij 1, w przeciwnym razie 0.
źródło
PARI / GP, 28 bajtów
Wypróbuj online ze wszystkimi testami!
Zwraca
0
lub1
(zwykłe wartości „boolowskie” PARI / GP).Wyjaśnienie:
v
musi być wektorem (lub wektorem kolumny lub listą) z dwiema liczbamiN
iM
jako współrzędne. Na przykład[8, 10]
. Następnies
będzie „zestaw” złożony z tych liczb, który jest albo wektorem jednej współrzędnej (jeśliN==M
), albo wektorem dwóch współrzędnych z posortowanymi pozycjami w przeciwnym razie.Następnie, jeśli liczba
#s
współrzędnychs
jest tylko jedna, otrzymujemy1
(prawda). W przeciwnym razieprimes
zwróci wektor wszystkich liczb pierwszych w zamkniętym przedziale ods[1]
dos[2]
. Negacja!
tego da,1
jeśli wektor jest pusty, a negacja wektora jednego lub więcej niezerowych wpisów (tutaj jedna lub więcej liczb pierwszych) da0
.źródło
JavaScript (ES6),
5756 bajtówPobiera dane wejściowe w składni curry
(a)(b)
. Zwraca0
lub1
.Przypadki testowe
Pokaż fragment kodu
W jaki sposób?
źródło
R ,
6346 bajtów-17 autorstwa Giuseppe
Wypróbuj online!
Dość prosta aplikacja rozwiązania galaretki ETHProductions . Główną interesującą
rzeczą nawynosjestto, że z wektorami boolowskimi Rany(x)==all(x)
jest równoważnemin(x)==max(x)
.źródło
numbers
zainstalowany zamiastmin(x)==max(x)
jest to równoważne ze sprawdzeniem, czy wszystkie elementyis_prime(a:b)
są równe, możemy użyć tej ostatniej sztuczki, aby sprowadzić ją do 46 bajtów z pakietemprimes
lubnumbers
.C (gcc),
153146 bajtów-7 od Jonathana Frecha
Definiuje funkcję,
h
która przyjmuje dwaint
s i zwraca1
prawdę i0
falseyWypróbuj online!
n
jest funkcją, która zwraca 1, jeśli jej argument nie jest liczbą pierwszą.g
to makro, które ustawia pierwszy i drugi argument na pierwszą liczbę pierwszą mniejszą niż i większą niż (odpowiednio) jego trzeci argumenth
robig
dla obu wejść i sprawdza, czy wyjścia są takie same.źródło
return a==c&&b==d;
może byćreturn!(a-c|b-d);
.Galaretka , 6 bajtów
Wypróbuj online!
-2 dzięki Dennisowi .
źródło
APL (Dyalog Unicode) ,
18 + 16 = 3424 bajtyWypróbuj online!
Dzięki Adám za 10 bajtów.
Linia
⎕CY'dfns'
( C PO Y jest potrzebne) do importowania dfns ( d ynamic F unctio NS ) gromadzenia, dołączoną do domyślnej Dyalog APL instalacji.Jak to działa:
źródło
Python 2 ,
8786 bajtówWypróbuj online!
źródło
C (gcc) ,
103 bajty100 bajtówWypróbuj online!
źródło
Haskell , 81 bajtów
Proste rozwiązanie:
Wypróbuj online!
źródło
Mathematica,
392726 bajtówRozszerzony:
Stosowanie:
Wkłady: -12 bajtów Jenny_mathy , -1 bajtów Martin Ender
źródło
Equal@@NextPrime[#,{-1,1}]&
pobiera jako dane wejściowe[{N,M}]
lub jeśli chcesz zachować oryginalne dane wejściowe, użyj tych 30 bajtów:Equal@@NextPrime[{##},{-1,1}]&
#~NextPrime~{-1,1}
.jot , 15 bajtów
Jak to działa:
Wypróbuj online!
źródło