Zaskakujące, nie wydaje mi się, abyśmy mieli pytanie w golfa w celu ustalenia, czy liczba jest półpierwszą .
Semiprime jest liczbą naturalną, która jest iloczynem dwóch (niekoniecznie odrębnych) liczb pierwszych.
Dość prosta, ale niezwykle ważna koncepcja.
Biorąc pod uwagę dodatnią liczbę całkowitą, określ, czy jest to wartość półpierwsza. Twój wynik może być w dowolnej formie, pod warunkiem, że daje to samo wyjście dla dowolnej wartości prawdziwej lub falsey. Możesz również założyć, że Twój wkład jest wystarczająco mały, aby wydajność lub przepełnienie nie stanowiły problemu.
Przypadki testowe:
input -> output
1 -> false
2 -> false
3 -> false
4 -> true
6 -> true
8 -> false
30 -> false (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes
49 -> true (7 * 7) still technically 2 primes
95 -> true
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357
-> true, and go call someone, you just cracked RSA-2048
To jest golf golfowy , więc obowiązują standardowe zasady!
Odpowiedzi:
Brachylog , 2 bajty
Zasadniczo port od odpowiedzi Fatalize na wyzwanie liczby Sphenic.
Wypróbuj online!
W jaki sposób?
źródło
Ċ
to właściwie wbudowana lista dwóch zmiennych; ponieważ jest językiem deklaratywnym, dane wyjściowe są domyślnie testem satysfakcji (np.ḋ
same w sobie byłyby wynikiemtrue.
dla liczb całkowitych nieujemnych).c6 eb
.Łuska , 4 bajty
Spójrz, nie ma Unicode!
Wypróbuj online!
W jaki sposób?
źródło
Mathematica, 16 bajtów
PrimeOmega
zlicza liczbę czynników pierwszych, licząc wielokrotność.źródło
SemiprimeQ
PrimeOmega
Pyth , 4 bajty
Zestaw testowy .
W jaki sposób?
źródło
Python 3 , 54 bajty
Wypróbuj online!
Poprzednie verson miał kilka problemów na zaokrąglenie licznie Cube (
125
,343
itp)to oblicza ilość dzielników (nie tylko liczby pierwsze), jeżeli ma
1
lub2
powracaTrue
.Jedynym wyjątkiem jest sytuacja, gdy liczba ma więcej niż dwa czynniki pierwsze, ale tylko dwa dzielniki. W tym przypadku jest to idealna kostka liczby pierwszej (jej dzielnikami jest pierwiastek sześcianu, a pierwiastek sześcianu podniesiony do kwadratu).
x**3==n
obejmie ten przypadek, dodanie jednego do wpisu głównego kostki wypycha sumę do liczby 3 i zatrzymuje fałszywie dodatni. dziękuję Jonathanowi Allanowi za pisanie z tym pięknym wyjaśnieniemźródło
n**(1/3)%1>0<sum...
powinno działać.Rubin ,
5648 bajtówWypróbuj online!
Jak to działa:
Dzięki Value Ink za pomysł, który oszczędził 8 bajtów.
źródło
c
zacząć od zera i policzyć, zamiast uczynić z niego tablicę, do której dodasz wszystkie czynniki? W ten sposób eliminujesz potrzebę użyciasize
na końcuMathematica,
3129 bajtówźródło
Neim , 4 bajty
Wypróbuj online!
źródło
𝐏
,𝐥
,δ
, i𝔼
jako pojedynczych bajtach.Python 2 , 67 bajtów
Wypróbuj online!
-10 bajtów dzięki @JonathanAllan!
Uznanie za algorytm faktoryzacji Prime otrzymuje Dennis (w wersji początkowej)
źródło
JavaScript (ES6), 47 bajtów
Zwraca wartość logiczną.
Próbny
Pokaż fragment kodu
źródło
Mathematica 32 bajty
Dzięki ngenesis zapisano 1 bajt
źródło
;;
zamiastAll
.Galaretka , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Właściwie 4 bajty
Wypróbuj online!
źródło
05AB1E, 4 bajty
Wypróbuj online!
W jaki sposób?
źródło
MATL, 5 bajtów
Wypróbuj online!
Wyjaśnienie
Yf
- Czynniki pierwsze.n
- długość2=
- Czy wynosi 2?źródło
Dyalog APL, 18 bajtów
Wypróbuj online!
W jaki sposób?
⎕CY'dfns'
- importpco
3pco⎕
- uruchamianypco
na wejściu z lewym argumentem 3 (czynniki pierwsze)2=≢
- długość = 2?źródło
Gaia , 4 bajty
4 bajty wydają się być wspólną długością, zastanawiam się, dlaczego ...: P
Wypróbuj online!
Wyjaśnienie
źródło
Python z SymPy 1.1.1 ,
5744 bajtów-13 bajtów dzięki alephalpha (użyj 1.1.1
primeomega
)Wypróbuj online!
źródło
lambda n:primeomega(n)==2
R , 67 bajtów
Wypróbuj online!
źródło
Rubinowy , 35 + 8 = 43 bajty
Używa
-rprime
flagi do odblokowaniaprime_division
funkcji.Wypróbuj online!
źródło
Java 8,
6961 bajtów-8 bajtów dzięki @Nevay .
Wypróbuj tutaj.
źródło
else++r;
), aby zaoszczędzić 8 bajtówn->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}
.Python 2 ,
7565 bajtówWypróbuj online!
Wszystko kredytowej odpowiedź XNOR jest dla oryginalnego głównego kodu faktoryzacji.
źródło
C #, 112 bajtów
Po zastosowaniu formatowania:
I jako program testowy:
Który ma wynik:
źródło
Pari / GP , 17 bajtów
Wypróbuj online!
źródło
Siatkówka , 45 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Konwertuj na unary.
Spróbuj znaleźć dwa czynniki.
Upewnij się, że oba czynniki są najważniejsze.
Upewnij się, że znaleziono dwa czynniki.
źródło
Python 2, 90 bajtów
f
przyjmuje liczbę całkowitąn
większą lub równą1
, zwraca wartość logiczną.Wypróbuj online!
Przypadki testowe:
źródło
J , 6 bajtów
5 bajtów będzie działać jednorazowo:
Wydaje mi się, że potrzebuję sześciu, kiedy zdefiniuję funkcję:
źródło
Pyke , 5 bajtów
Wypróbuj tutaj!
źródło
Japt ,
65 bajtówPrzetestuj online
Wyjaśnienie
Robi to prawie tak samo jak większość innych odpowiedzi:
k
pobiera tablicę czynników pierwszych,Ê
pobiera jej długość i¥
sprawdza równość z2
.źródło
÷k o)j
działa również, niestety ma tę samą długość :-(Perl 6 , 43 bajtów
Wypróbuj online!
f
jest najmniejszym współczynnikiem większym niż 1 argument wejściowy$_
lubNil
jeśli$_
wynosi 1. Zwracana wartość funkcji jest prawdziwa, jeślif
jest prawdziwa (tzn. nieNil
) ORAZ argument wejściowy podzielony przez współczynnik jest liczbą pierwszą.Jeśli
$_
sama liczba pierwszaf
jest równa , to będzie równa$_
i$_ / f
wynosi 1, co nie jest liczbą pierwszą, więc formuła również działa w tym przypadku.źródło