Definitionen
- Zwei Zahlen sind Co-Primzahlen, wenn ihr einziger positiver gemeinsamer Teiler ist
1
. - Eine Liste von Zahlen ist gegenseitig gleichrangig, wenn jedes Zahlenpaar in dieser Liste gleichrangig ist.
- Eine Faktorisierung von Zahlen
n
ist eine Liste von Zahlen, deren Produkt istn
.
Aufgabe
Bei einer positiven Zahl n
wird die gegenseitige Co-Prim-Faktorisierung n
mit der maximalen Länge ausgegeben , die nicht enthalten ist 1
.
Beispiel
Denn n=60
die Antwort ist [3,4,5]
, weil 3*4*5=60
und keine andere Faktorisierung, ohne 1
die keine Länge größer oder gleich 3
der Länge der Faktorisierung ist.
Regeln und Freiheiten
- Sie können jedes sinnvolle Eingabe- / Ausgabeformat verwenden.
- Die Einträge in der Ausgabeliste müssen nicht sortiert werden.
Testfälle
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]
Wertung
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt.
code-golf
number-theory
primes
division
Undichte Nonne
quelle
quelle
1
.)Antworten:
Mathematik , 24 Bytes
Probieren Sie es online!
quelle
#^#2&@@@FactorInteger@#&[1]
kehrt{1}
in Mathematica zurück. Aber es funktioniert in der Mathematik.FactorInteger
anders implementiert . :)Brachylog , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
05AB1E ,
35 Bytes+2 Bytes, um den Kantenfall von zu beheben
1
. Danke an Riley für den Patch (und für die Testsuite, mein 05ab1e ist nicht so stark!)Testsuite bei Online testen !
Wie?
quelle
1
.CJam , 9 Bytes
Probieren Sie es online!
Trennt die Eingabe einfach in ihre konstituierenden Primkräfte und entfernt
1
s (nur für die Eingabe erforderlich1
).quelle
Haskell , 51 Bytes
(2#)
ist eine anonyme Funktion, die eine Ganzzahl annimmt und eine Liste zurückgibt.Verwenden Sie als
(2#) 99
.Probieren Sie es online!
Inspiriert von dem Power-Trick, den einige Leute in der jüngsten Squarefree Number Challenge verwendet haben .
m#n
erzeugt Faktoren vonn
, beginnend mitm
.m>n
wir aufhören, haben wir abschließend bereits alle Faktoren gefunden.x=gcd(m^n)n
ist der größte Faktor,n
dessen Primfaktoren alle in sindm
. Beachten Sie, dass kleinerem
zuerst getestet werden, es sei1
denn , esm
handelt sich um eine Primzahl.x
in die sich ergebende Liste auf, wenn es nicht 1 ist, und rekursieren dann mit dem nächstenm
, dividierendn
durchx
. Beachten Sie, dassx
unddiv n x
nicht gemeinsame Faktoren haben.(2#)
Nimmt eine Zahl und beginnt, ihre Faktoren aus zu finden2
.quelle
MATL , 7 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Sie die Eingabe
80
als Beispiel.EDIT (9. Juni 2017):
YF
mit zwei Ausgängen wurde in Release 20.1.0 geändert : Nicht-Faktor-Primzahlen und ihre (Null-) Exponenten werden übersprungen. Dies hat keinen Einfluss auf den obigen Code, der ohne Änderungen funktioniert (aber1X-
entfernt werden kann).quelle
1X-
in der neuen Version überflüssig ist ... auch, dass es für mich eher nach einer festgelegten Differenz als nach einer Überschneidung aussieht.Gelee , 5 Bytes
Testsuite bei Online testen !
Wie?
quelle
ÆfŒgZP
. Es hat die gleiche Anzahl von Token, aber zu viele Zwei-Byte-Atome;)1
für eine Eingabe zurückgegeben,1
die nicht zulässig ist (die Auswirkung der Ausführung eines leeren Produkts).Alice , 10 Bytes
Probieren Sie es online!
Leider werden hier wieder Codepunkte als Ganzzahl-E / A verwendet . Der Testfall in der TIO-Verbindung ist der Eingang 191808, der in 64 , 81 und 37 zerlegt wird . Beachten Sie, dass diese Lösung die Primzahlen in der Reihenfolge vom größten zum kleinsten Prim druckt, sodass wir die Ausgabe erhalten
%Q@
.Der Einfachheit halber ist hier eine 16-Byte-Lösung mit dezimaler E / A, die denselben Kernalgorithmus verwendet:
Probieren Sie es online!
Erläuterung
Wie die anderen antworten, zerlegt dies die Eingabe in Primkräfte.
quelle
Mathematica 46 Bytes
Probieren Sie es online!
quelle
{}; {2}; {3}; {2}; {5}; {2,3}; {7}; {2}; {3}; {2,5}; {11}; {2,3}; {13}; ...
ausgegeben, sollte aber{}; {2}; {3}; {4}; {5}; {2,3}; {7}; {8}; {9}; {2,5}; {11}; {4,3}; {13}; ...
stattdessen ausgegeben werden.#
mehr als#
sich selbst zugreifen , können Sie eine Menge Bytes sparen, indem SieApply
(@@@
) anstelle vonMap
(/@
) verwenden:#^#2&@@@If...
PHP, 62 Bytes
druckt ein assoziatives Array mit der Primzahl als Schlüssel und wie oft die Primzahl als Wert verwendet wird und nichts für die Eingabe
1
Probieren Sie es online!
Ausgabe für
60
PHP, 82 Bytes
Probieren Sie es online!
Gibt nichts zur Eingabe aus,
1
wenn Sie stattdessen ein leeres Array und ein sortiertes Array wünschen, dauert es etwas längerquelle
Eigentlich 6 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Pari / GP , 28 Bytes
Probieren Sie es online!
quelle
miniML , 47 Bytes
Herausforderungen im Zusammenhang mit der Faktorisierung von Primzahlen sind hier schrecklich überrepräsentiert, sodass wir alle leider gezwungen sind, die Faktorisierung in der Standardbibliothek vorzunehmen.
Beachten Sie, dass sich "mini" in miniml auf die Größe des Feature-Sets bezieht, nicht auf die Größe des darin geschriebenen Quellcodes.
quelle
Ruby, 61 Bytes
Ich bin wirklich enttäuscht, nachdem ich 6-7-Byte-Lösungen gesucht habe -))
quelle
Mathematica, 24 Bytes
Schade
@@@*
ist keine Sache. Auch ich mag/@*
,@@*
und in der Tat, ändern@@@
zu/@@
,//@
zu@@@
oder was auch immer , und fügen Sie die unendliche Familie//@
,///@
...quelle