Definicje
- Dwie liczby są współrzędne pierwsze, jeśli ich jedynym dodatnim wspólnym dzielnikiem jest
1
. - Lista liczb jest wzajemnie pierwotna, jeżeli każda para liczb na tej liście jest wzajemnie pierwotna .
- Faktoryzacja liczby
n
to lista liczb, których produktem jestn
.
Zadanie
Biorąc pod uwagę liczbę dodatnią n
, wyprowadzaj wzajemnie rozkład na czynniki pierwsze n
z maksymalną długością, która nie obejmuje 1
.
Przykład
Ponieważ n=60
odpowiedź brzmi [3,4,5]
, ponieważ 3*4*5=60
żadna inna wzajemnie pierwotna faktoryzacja bez nie 1
ma długości większej lub równej 3
długości faktoryzacji.
Zasady i wolności
- Możesz użyć dowolnego rozsądnego formatu wejścia / wyjścia.
- Wpisy na liście wyników nie muszą być sortowane.
Przypadki testowe
n output
1 []
2 [2]
3 [3]
4 [4]
5 [5]
6 [2, 3]
7 [7]
8 [8]
9 [9]
10 [2, 5]
11 [11]
12 [3, 4]
13 [13]
14 [2, 7]
15 [3, 5]
16 [16]
17 [17]
18 [2, 9]
19 [19]
20 [4, 5]
21 [3, 7]
22 [2, 11]
23 [23]
24 [3, 8]
25 [25]
26 [2, 13]
27 [27]
28 [4, 7]
29 [29]
30 [2, 3, 5]
31 [31]
32 [32]
33 [3, 11]
34 [2, 17]
35 [5, 7]
36 [4, 9]
37 [37]
38 [2, 19]
39 [3, 13]
40 [5, 8]
41 [41]
42 [2, 3, 7]
43 [43]
44 [4, 11]
45 [5, 9]
46 [2, 23]
47 [47]
48 [3, 16]
49 [49]
50 [2, 25]
51 [3, 17]
52 [4, 13]
53 [53]
54 [2, 27]
55 [5, 11]
56 [7, 8]
57 [3, 19]
58 [2, 29]
59 [59]
60 [3, 4, 5]
61 [61]
62 [2, 31]
63 [7, 9]
64 [64]
65 [5, 13]
66 [2, 3, 11]
67 [67]
68 [4, 17]
69 [3, 23]
70 [2, 5, 7]
71 [71]
72 [8, 9]
73 [73]
74 [2, 37]
75 [3, 25]
76 [4, 19]
77 [7, 11]
78 [2, 3, 13]
79 [79]
80 [5, 16]
81 [81]
82 [2, 41]
83 [83]
84 [3, 4, 7]
85 [5, 17]
86 [2, 43]
87 [3, 29]
88 [8, 11]
89 [89]
90 [2, 5, 9]
91 [7, 13]
92 [4, 23]
93 [3, 31]
94 [2, 47]
95 [5, 19]
96 [3, 32]
97 [97]
98 [2, 49]
99 [9, 11]
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
code-golf
number-theory
primes
division
Leaky Nun
źródło
źródło
1
.)Odpowiedzi:
Matematyka , 24 bajty
Wypróbuj online!
źródło
#^#2&@@@FactorInteger@#&[1]
powraca{1}
w Mathematica. Ale działa w matematyce.FactorInteger
inaczej. :)Brachylog , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
05AB1E ,
35 bajtów+2 bajty, aby naprawić wielkość krawędzi
1
. Dzięki Riley za łatkę (i pakiet testowy mój 05ab1e nie jest aż tak silny!)Pakiet testowy w Wypróbuj online!
W jaki sposób?
źródło
1
.CJam , 9 bajtów
Wypróbuj online!
Po prostu dzieli dane wejściowe na podstawowe składowe mocy i usuwa
1
s (konieczne tylko dla danych wejściowych1
).źródło
Haskell , 51 bajtów
(2#)
to anonimowa funkcja przyjmująca liczbę całkowitą i zwracająca listę.Użyj jako
(2#) 99
.Wypróbuj online!
Zainspirowany sztuczką mocy, którą niektórzy wykorzystali w ostatnim konkursie liczbowym bez kwadratów .
m#n
generuje czynnikin
, zaczynając odm
.m>n
przestaniemy, stwierdzając, że znaleźliśmy już wszystkie czynniki.x=gcd(m^n)n
jest największym czynnikiem, wn
którym wszystkie czynniki pierwsze sąm
. Zauważ, że ponieważ mniejszem
są najpierw testowane, będzie to możliwe,1
chyba żem
jest liczbą pierwszą.x
na wynikowej liście, jeśli nie jest to 1, a następnie powtarzamy z następnąm
, dzielącn
przezx
. Pamiętaj, żex
idiv n x
nie mogą mieć wspólnych czynników.(2#)
bierze liczbę i zaczyna szukać jej czynników2
.źródło
MATL , 7 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważ dane wejściowe
80
jako przykład.EDYCJA (9 czerwca 2017 r.):
YF
Dwie wersje zostały zmodyfikowane w wersji 20.1.0 : liczby pierwsze nieczynnikowe i ich (zero) wykładniki są pomijane. Nie wpływa to na powyższy kod, który działa bez żadnych zmian (ale1X-
można go usunąć).źródło
1X-
jest zbędny w nowym wydaniu ... także, że dla mnie wygląda to raczej na różnicę, niż na skrzyżowanie.Galaretka , 5 bajtów
Pakiet testowy w Wypróbuj online!
W jaki sposób?
źródło
ÆfŒgZP
. Ma taką samą liczbę tokenów, ale zbyt wiele dwubajtowych atomów;)1
której wejście1
jest niedozwolone (efekt wykonania pustego produktu).Alice , 10 bajtów
Wypróbuj online!
Niestety, ponownie używa punktów kodowych jako liczb całkowitych we / wy . Przypadek testowy w łączu TIO to wejście 191808, które rozkłada się na 64 , 81 i 37 . Zauważ, że to rozwiązanie drukuje moce główne w kolejności od największej do najmniejszej liczby pierwszej, więc otrzymujemy wynik
%Q@
.Dla wygody oto 16-bajtowe rozwiązanie z dziesiętnym We / Wy, które wykorzystuje ten sam algorytm podstawowy:
Wypróbuj online!
Wyjaśnienie
Podobnie jak inne odpowiedzi, rozkłada to dane wejściowe na moce główne.
źródło
matematyka 46 bajtów
Wypróbuj online!
źródło
{}; {2}; {3}; {2}; {5}; {2,3}; {7}; {2}; {3}; {2,5}; {11}; {2,3}; {13}; ...
ale powinien{}; {2}; {3}; {4}; {5}; {2,3}; {7}; {8}; {9}; {2,5}; {11}; {4,3}; {13}; ...
zamiast tego.#
więcej niż on#
sam, możesz zaoszczędzić wiele bajtów, używającApply
(@@@
) zamiastMap
(/@
):#^#2&@@@If...
PHP, 62 bajty
wypisuje tablicę asocjacyjną z liczbą pierwszą jako kluczem i jak często liczba pierwsza jest używana jako wartość i nic do wprowadzania
1
Wypróbuj online!
Wyjście dla
60
PHP, 82 bajty
Wypróbuj online!
nic nie wypisuje na wejściu,
1
jeśli wolisz pustą tablicę, a posortowana tablica będzie trochę dłużejźródło
Właściwie 6 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Pari / GP , 28 bajtów
Wypróbuj online!
źródło
miniML , 47 bajtów
Wyzwania dotyczące faktoryzacji pierwszorzędnej są tutaj straszliwie nadmiernie reprezentowane, dlatego wszyscy jesteśmy niestety zmuszeni do faktoryzacji w standardowej bibliotece.
Zauważ, że „mini” w miniml odnosi się do rozmiaru zestawu funkcji, a nie do rozmiaru kodu źródłowego w nim zapisanego.
źródło
Rubin, 61 bajtów
Jestem naprawdę rozczarowany szukaniem rozwiązań 6-7-bajtowych -))
źródło
Mathematica, 24 bajty
Szkoda
@@@*
nie jest rzeczą. Również chciałbym/@*
,@@*
iw rzeczywistości, zmiana@@@
celu/@@
,//@
do@@@
lub cokolwiek i dodać nieskończoną rodziny//@
,///@
...źródło