Liczba pierwsza jest słaba, jeśli najbliższa inna liczba pierwsza jest mniejsza od niej. Jeśli jest remis, liczba pierwsza nie jest słaba.
Na przykład 73 jest liczbą pierwszą słabą, ponieważ 71 jest liczbą pierwszą, ale 75 jest liczbą złożoną.
Zadanie
Napisz kod komputerowy, który po podaniu liczby pierwszej większej niż 2 określi, czy jest to liczba pierwsza słaba. Jest to standardowy problem decyzyjny, dlatego powinieneś wypisać dwie unikalne wartości dla każdego z dwóch przypadków (np. weak
I not weak
).
To jest golf golfowy, więc obowiązują standardowe reguły dla tagu.
OEIS
Oto pierwsze 47 słabych liczb pierwszych:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Oto OEIS dla słabych liczb pierwszych (powinien zwrócić weak
) OEIS A051635
Oto OEIS dla zrównoważonych liczb pierwszych (powinien zwrócić not weak
) OEIS A006562
Oto OEIS dla silnych liczb pierwszych (powinien zwrócić not weak
) OEIS A051634
źródło
not weak
czystrong
?Odpowiedzi:
Galaretka , 7 bajtów
Wypróbuj online!
Wyjaśnienie
Jako bonus, zmieniających
>
się=
lub<
czeki dla liczb pierwszych zrównoważonych i silne, odpowiednio.źródło
>
, nie?Mathematica, 24 bajty
NextPrime
Wbudowanych można (ab?) Wykorzystane do obliczenia poprzedni Prime przez karmienie go argument negatywny.źródło
Galaretka , 9 bajtów
Zwraca
1
za słaby i0
nie słaby lub zrównoważony (zwraca1
za wkład2
)Wypróbuj online!
W jaki sposób?
źródło
IIṠ⁼1
doII>0
celuI<\
) ... twoje jest znacznie różni się jednak. Wygląda na to, że myślisz inaczej niż ja ... EDYCJA: Pietu1998 powrócił!PHP , 69 bajtów
drukuje jeden dla słabej liczby pierwszej i nic dla nie słabej liczby pierwszej
Wypróbuj online!
źródło
Oktawa,
9384 bajtówDzięki @LuisMendo i @ rahnema1 za oszczędność bajtów!
Wypróbuj online!
źródło
i-=1
etc? Równieżend
nie jest potrzebne w funkcji; możesz przenieść go do stopkiMaxima, 42 bajty
Wypróbuj online!
źródło
MATL , 13 bajtów
W przeciwnym
1
razie dane wyjściowe są słabe0
.Wypróbuj online!
Wyjaśnienie
źródło
GNU APL 1.2, 78 bajtów
∇f N
deklaruje funkcję, która przyjmuje argument.(~R∊R∘.×R)/R←1↓⍳N×2
daje listę wszystkich liczb pierwszych od 2 do dwukrotności argumentu. Zakładam, że następna liczba pierwsza jest mniejsza niż dwukrotność oryginału. Jeśli jest to nieprawda,N*2
podaje N do kwadratu i zajmuje taką samą liczbę bajtów (mam nadzieję, że jest to wystarczająco duża, aby przekroczyć kolejną liczbę pierwszą). (Zobacz wyjaśnienie Wikipedii dotyczące działania wyszukiwania głównego)X←(R←(...))⍳N
przypisuje tę listę do wektoraR
(zastępując jej poprzednią zawartość), znajduje indeks oryginalnej liczby pierwszejN
na tej liście, a następnie przypisuje ten indeks doX
.|R[X-1]-N
oblicza różnicę między poprzednią liczbą pierwszą (ponieważR
zawiera liczby pierwsze, tenX-1
element jest liczbą pierwszą przedN
),N
a następnie przyjmuje wartość bezwzględną (APL działa od prawej do lewej).|R[X+1]-N
robi to samo, ale dla następnej liczby pierwszej.(|R[X-1]-N)<|R[X+1]-N
drukuje 1, jeśli poprzednia liczba pierwsza jest bliższa oryginałowi niż kolejna liczba pierwsza, a 0 w przeciwnym razie. Nawiasy są potrzebne do pierwszeństwa.∇
kończy funkcję.źródło
Galaretka , 9 bajtów
Wypróbuj online!
źródło
Pyth, 15 bajtów
Wypróbuj tutaj.
Wykorzystuje algorytm Pietu1998.
źródło
Perl 6 , 41 bajtów
Wypróbuj online!
$_
jest argumentem funkcji. Funkcja mapowania-> \n { $_ + n, * + n ... &is-prime }
przyjmuje liczbęn
i zwraca ciąg liczb,$_ + n, $_ + 2*n, ...
który kończy się, gdy osiągnie liczbę pierwszą. Mapowanie tej funkcji na dwie liczby1
i-1
tworzy sekwencję dwóch sekwencji; pierwszy zaczyna się na$_ + 1
i kończy pierwszą liczbą pierwszą większą niż$_
, a drugi zaczyna się na$_ - 1
i kończy pierwszą liczbą pierwszą mniejszą niż$_
.[>]
zmniejsza tę dwuelementową listę operatorem większym niż, zwracając wartość true, jeśli pierwsza sekwencja jest większa (tj. dłuższa) niż druga.źródło
Python 2.7 - 120 bajtów
Ponieważ python nie ma wbudowanej funkcji podstawowej, możemy użyć twierdzenia Wilsona, aby uzyskać ładny krótki sprawdzanie liczby pierwszej. Twierdzenie Wilsona stwierdza, że liczba jest liczbą pierwszą wtedy i tylko wtedy, gdy (n-1)! jest zgodny z -1 mod (n). Dlatego funkcja i zwróci 1, jeśli liczba jest liczbą pierwszą, i 0, jeśli nie jest. Następnie funkcja f określa, czy następna liczba pierwsza z tej liczby występuje najpierw, gdy jest zwiększana w dół, a nie w górę. Jeśli żadna z liczb inkrementowanych nie jest liczbą pierwszą, jest ona po prostu rekurencyjnie wywoływana ponownie.
Niektóre przykładowe We / Wy
źródło
Python 2 ,
1221081039492 bajtyWypróbuj online!
Wykorzystuje pomysł Pietu ... a następnie zaoszczędził 28 bajtów, grając w golfa w krótszych iteratorach z listami głównymi; następnie 2 więcej zastępując
-3*n>0
z>3*n
(d'oh!)źródło
Regex (większość smaków), 47 bajtów
Wypróbuj online!
Pobiera dane wejściowe jednoargumentowe. Wyprowadza dopasowanie dla słabych liczb pierwszych, brak dopasowania dla słabych liczb pierwszych. Działa w ECMAScript, Perl, PCRE, Python, Ruby.
Wyjaśnienie:
Niech N będzie wejściem, A najbliższą liczbą pierwszą <N, a B najbliższą liczbą pierwszą> N. Główną trudnością podejścia regularnego do tego wyzwania jest to, że nie możemy reprezentować liczb większych niż dane wejściowe, jak B. Zamiast tego znajdź najmniejsze b, tak że 2b + 1 jest liczbą pierwszą, a 2b + 1> N, co zapewnia 2b + 1 = B.
Następnie zauważ, że tak naprawdę nie musimy znaleźć A. Dopóki dowolna liczba pierwsza <N jest bliższa N niż B, N jest słabą liczbą pierwszą.
źródło
Oktawa, 53 bajty
Wypróbuj online!
źródło
JavaScript ES6,
162154 bajtów8 bajtów oszczędności na podstawie sztuczki Jörga Hülsermanna „nie drukuj niczego w jednym przypadku”. Nie trzeba
?"Y":"N"
późniejone<two
źródło
05AB1E , 17 bajtów
Wypróbuj online!
Wykorzystuje algorytm Pietu1998.
źródło
Python 3 , 149 bajtów
Wypróbuj online!
Korzystam z funkcji generowania liczb pierwszych (górna linia) wziętej z tej starej odpowiedzi wymiany stosów.
źródło
JavaScript, 98 bajtów
Mniej Golphed
Zauważ, że kod testowy nie sprawdza, czy wejście „liczba pierwsza” jest w rzeczywistości liczbą pierwszą.
źródło
braingasm ,
2322 bajtówDrukuje
1
dla słabych liczb pierwszych i0
dla nie słabych.Przewodnik:
źródło
Julia 0.6, 64 bajty
źródło
Python 2 , 81 bajtów
Wypróbuj online!
Wykorzystuje twierdzenie Wilsona do testu pierwotności.
źródło