Bei einer gegebenen Ganzzahl n >= 2
wird der größte Exponent in seiner Primfaktorisierung ausgegeben. Dies ist die OEIS-Sequenz A051903 .
Beispiel
Lassen n = 144
. Seine Hauptfaktorisierung ist 2^4 * 3^2
. Der größte Exponent ist 4
.
Testfälle
2 -> 1
3 -> 1
4 -> 2
5 -> 1
6 -> 1
7 -> 1
8 -> 3
9 -> 2
10 -> 1
11 -> 1
12 -> 2
144 -> 4
200 -> 3
500 -> 3
1024 -> 10
3257832488 -> 3
Antworten:
05AB1E , 2 Bytes
Probieren Sie es online!
Wie?
quelle
Python 2 ,
625756 BytesProbieren Sie es online!
quelle
f=lambda n,k=0:max(k%n-n%(k/n+2)**(k%n)*n,k<n**2and f(n,k+1))
Gelee , 3 Bytes
Probieren Sie es online!
Dies funktioniert auch in M . Probieren Sie es online!
quelle
Haskell ,
6160504846 Bytes-2 Bytes dank xnor
Probieren Sie es online!
45 Bytes bei einem Import:
Probieren Sie es online!
quelle
0^
ist süß, aber es ist kürzer, nur die Bedingung als Boolean zu überprüfen.Ohm v2 , 2 Bytes
Probieren Sie es online!
Erläuterung?
Nein.
quelle
Python 2 , 78 Bytes
Probieren Sie es online!
-5 danke an ovs .
Diese Antwort führt keine Prime Checks durch. Stattdessen wird die Tatsache ausgenutzt, dass der höchste Exponent eines Primfaktors bei jeder Faktorisierung einer Zahl größer oder gleich dem Exponenten eines anderen Faktors ist.
quelle
Japt
-h
,97 BytesVersuch es
quelle
ü
Erstellt Unterarrays mit den gleichen Werten. Es wird auch zuerst nach Wert sortiert, aber das ist hier nicht relevant.Mathematica, 27 Bytes
Probieren Sie es online!
quelle
Max@@Last/@FactorInteger@#&
. Das spart leider keine Bytes.MATL , 4 Bytes
Probieren Sie es online!
quelle
Brachylog , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Schale , 5 Bytes
Probieren Sie es online!
p
- Erhält die Primfaktoren.g
- Gruppiert benachbarte Werte.mL
- Ermittelt die Länge jeder Gruppe.▲
- Maximum.quelle
APL (Dyalog) , 19 Bytes
Probieren Sie es online!
Wie?
2pco⎕
- 2D-Array von Primfaktoren und Exponenten1↓
- die Faktoren fallen lassen⌈/
- maximalquelle
Javascript 54 Bytes
* Annahme eines unendlichen Stacks (wie bei Code-Golf-Herausforderungen)
quelle
PARI / GP, 24 Bytes
Wenn ich den
n->
Teil nicht zähle , sind es 21 Bytes.quelle
Oktave , 25 Bytes
Probieren Sie es online!
Erläuterung
factor
Erzeugt das Array von (möglicherweise wiederholten) Prim-Exponenten. Die zweite Ausgabe vonmode
gibt an, wie oft der Modus (dh der am häufigsten wiederholte Eintrag) erscheint.quelle
Pyth , 7 Bytes
Probieren Sie es hier aus.
quelle
eS/LPQP
(7 Bytes),eSlM.gkP
(8 Bytes).Python 2 ,
9084 BytesProbieren Sie es online!
quelle
Gaia , 4 Bytes
Probieren Sie es online!
ḋ
- Berechnet die Primfaktorisierung als [Primzahl, Exponent] Paar.⌠
- Map und sammle das Ergebnis mit dem Maximalwert.)
- Letztes Element (Exponent).)
- Letztes Element (maximaler Exponent)Gaia , 4 Bytes
Probieren Sie es online!
ḋ
- Berechnet die Primfaktorisierung als [Primzahl, Exponent] Paar.)¦
- Map mit dem letzten Element (Exponent).⌉
- Erhält das maximale Element.quelle
MEIN , 4 Bytes
Probieren Sie es online!
Erläuterung?
quelle
Oktave : 30 Bytes
a=factor(x)
gibt einen Vektor zurück, der die Primfaktoren von enthältx
. Dies ist ein Vektor, der in aufsteigender Reihenfolge sortiert ist, wobei die Multiplikation aller Zahlen in sich selbstfactor(x)
ergibtx
, so dass jede Zahl im Vektor eine Primzahl ist.histc(...,a)
berechnet ein Histogramm für den Primfaktor-Vektor, wobei die Klassen die Primfaktoren sind. Das Histogramm zählt auf, wie oft wir jede Primzahl gesehen haben, wodurch sich der Exponent jeder Primzahl ergibt. Wir können hier ein bisschen schummeln, denn obwohlfactor(x)
doppelte Zahlen oder Klassen zurückgegeben werden, erfasst nur eine der Klassen, wie oft wir eine Primzahl sehen.max(...)
gibt somit den größten Exponenten zurück.Probieren Sie es online!
quelle
Alice , 17 Bytes
Probieren Sie es online!
Erläuterung
Dies ist nur ein Framework für einfache arithmetische Programme mit dezimaler E / A. Das
...
ist das eigentliche Programm, das bereits die Eingabe auf dem Stapel hat und die Ausgabe oben auf dem Stapel belässt.Alice hat tatsächlich eingebaute Funktionen, um die Primfaktorisierung einer ganzen Zahl zu erhalten (auch bei Paaren aus Primzahl und Exponentenzahl), aber die kürzeste, die ich mir ausgedacht habe, ist 10 Bytes länger als diese.
Stattdessen besteht die Idee darin, dass wir wiederholt eine Kopie jedes einzelnen Primfaktors aus der Eingabe abtrennen, bis wir 1 erreichen . Die Anzahl dieser Schritte entspricht dem größten Prim-Exponenten. Wir werden den Bandkopf als Zählervariable missbrauchen.
quelle
Julia,
605240 Bytes-12 + Korrektur dank Steadybox
quelle
print()
. Außerdem konnte ich den Code nicht so auf TIO ausführen, wie er ist. Ich gehe davon aus, dass er auf einer anderen Version der Sprache funktioniert, die dort nicht verfügbar ist. Dies läuft gut auf TIO:print(maximum(collect(values(factor(parse(BigInt,readline()))))))
print()
ist erforderlich, da die Antwort ein vollständiges Programm (das die Ausgabe anzeigt) oder eine Funktion (die die Ausgabe zurückgibt) sein muss. Ansonsten ist Ihre Lösung in Ordnung. Es scheint, dass Sie auf diese Weise einige Bytes sparen (und den Ausdruck vermeiden) können:f(x)=maximum(collect(values(factor(x))))
Eigentlich 4 Bytes
Probieren Sie es online!
quelle
Python 2 , 64 Bytes
-4 Bytes dank H.PWiz.
Probieren Sie es online!
Port von H.PWiz's Haskell Antwort . Ich teile dies nur, weil ich stolz bin, diesen Teil des Haskell-Codes verstehen und übersetzen zu können. : P
quelle
range(1,n)
nichtrange(1, n)
Erzeugt alle ganzen Zahlen in [1, n).a
Axiom 61 Bytes
Dies ist das erste Mal, dass ich finde, dass es möglich ist, die Funktion ohne die Verwendung von () Klammern zu definieren. Anstelle von "f (n) ==" "fn ==" ein Zeichen weniger ...
quelle
Schläger ,
8379 BytesProbieren Sie es online!
(Ich bin mir nicht sicher, ob es einen Konsens darüber gibt, was eine vollständige Racket-Lösung ausmacht. Deshalb gehe ich nach der Mathematica-Konvention vor, dass eine reine Funktion zählt.)
Wie es funktioniert
factorize
ergibt die Faktorisierung als Liste von Paaren:(factorize 108)
ergibt'((2 2) (3 3))
. Das zweite Element eines Paares ist gegeben durchcadr
, eine Abkürzung für die Zusammensetzung voncar
(Kopf einer Liste) mitcdr
(Ende einer Liste).Ich fühle mich dumm dabei
(cadr (argmax cadr list))
finde es , das Maximum der zweiten Elemente zu finden,max
arbeite aber nicht an Listen:(max (map cadr list))
Tue nicht, was wir wollen. Ich bin kein Schlägerexperte. Vielleicht gibt es einen besseren Standard, um dies zu tun.Schläger, 93 Bytes
Probieren Sie es online!
Wie es funktioniert
Eine alternative Version, die nicht importiert
factorize
und stattdessen mehr oder weniger alles von Grund auf neu erstellt. Die Funktion(p m d)
findet die höchste Potenzd
dieser Divisionm
und dann finden wir einfach den höchsten Wert(p n d)
fürd
zwischen2
undn
. (Wir müssen dies nicht auf Primzahlen beschränken, da es keine zusammengesetzte Kraft geben wird, die besser funktioniert als Primzahlen.)quelle
max
ist(apply max (map cadr list)
aber(cadr (argmax cadr list))
leider kürzer.J 9 Bytes
Max
<./
aller Hauptexponenten_&q:
Probieren Sie es online!
quelle
APL (NARS), 15 Zeichen, 30 Byte
Prüfung:
Kommentar:
quelle