Eine perfekte Kraft ist eine Reihe von Formen a**b
, in denen a>0
und b>1
.
Zum Beispiel 125
ist eine perfekte Kraft, weil es ausgedrückt werden kann als 5**3
.
Tor
Ihre Aufgabe ist es, ein Programm / eine Funktion zu schreiben n
, die bei einer positiven ganzen Zahl die -te perfekte Potenz findet n
.
Technische Daten
- Die erste vollkommene Kraft ist
1
(welche ist1**2
). - Eingabe / Ausgabe in jedem vernünftigen Format.
- Einbauten sind erlaubt .
Weitere Informationen
Wertung
Das ist Code-Golf . Kürzeste Lösung in Bytes gewinnt.
Testfälle
input output
1 1
2 4
3 8
4 9
5 16
6 25
7 27
8 32
9 36
10 49
code-golf
arithmetic
number-theory
Undichte Nonne
quelle
quelle
Antworten:
Jelly , 11 Bytes
Probieren Sie es online! .
Hintergrund
Jede positive ganze Zahl k kann eindeutig als das Produkt der Potenzen der ersten m Primzahlen faktorisiert werden , dh k = p 1 α 1 ≤ p m α m , wobei α m > 0 ist .
Wir haben a b ( b> 1 ) für eine positive ganze Zahl a genau dann, wenn b ein Teiler aller Exponenten α j ist .
Somit ist eine ganze Zahl k> 1 genau dann eine perfekte Potenz, wenn gcd (α 1 , ⋯, α m ) ≠ 1 ist .
Wie es funktioniert
quelle
a_n > 0
?" In der Faktorisierung für 21 ^ 2 scheinen mir die Exponenten für p = 2 und p = 5 Null zu sein.Mathematica, 34 Bytes
Erzeugt ein n × n- Array A ij = i 1+ j , glättet es und gibt das n- te Element zurück.
quelle
CJam, 16 Bytes
Teste es hier.
Erläuterung
Dies basiert auf einer ähnlichen Idee wie die Mathematica-Antwort von LegionMammal.
quelle
Oktave,
573130 BytesIch habe gerade wieder gemerkt, dass Octave nicht benötigt
ndgrid
(während Matlab tut) =)quelle
05AB1E , 12 Bytes
Code:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
Sage (Version 6.4, wahrscheinlich auch andere):
6463Erzeugt eine Lambda-Funktion, die die
n
perfekte Leistung zurückgibt . Wir verlassen uns auf die Tatsache, dass es in den erstenn^2
ganzen Zahlen gefunden wird. (Das1+n^2
ist notwendign=1,2
. Das0+k
Bit notwendig ist , zu konvertierenint(k)
zuInteger(k)
.)Byte off für
xrange
->range
, danke Dennis.Nur eine lustige Tatsache:
0
ist nach Sages Maßstäben eine perfekte Kraft, zum Glück, denn dann1
ist es das 1. Element der Liste, nicht das 0. :)quelle
is_perfect_power()
Pyth -
1211 BytesOffensichtlicher Ansatz, geht einfach durch und prüft alle Zahlen.
Test Suite .
quelle
MATL, 9 Bytes
Probieren Sie es online aus
Dies ist eine Portierung von Flawrs Octave-Lösung für MATL. Stellen Sie die Matrix der Potenzen auf
n^(n+1)
und holen Sie sich dien
-te.quelle
Julia,
6432 BytesDies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und eine Ganzzahl zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Die Idee hier ist die gleiche wie in der Mathematica- Antwort von LegionMammal : Wir nehmen das äußere Produkt der ganzen Zahlen 1 bis n mit 2 bis n + 1, reduzieren die resultierende Matrix spaltenweise, nehmen eindeutige Elemente, sortieren und erhalten das n- te Element .
Probieren Sie es online! (beinhaltet alle Testfälle)
quelle
JavaScript (ES6), 87
Weniger golfen
Prüfung
quelle
Eigentlich 18 Bytes (nicht konkurrierend)
Probieren Sie es online!(funktioniert möglicherweise nicht, da ein Update erforderlich ist)
Diese Lösung ist nicht konkurrierend, da ich einen Fehler mit behoben habe
E
nachdem diese Herausforderung veröffentlicht wurde.Erläuterung:
quelle
> <> 108 Bytes
Für dieses Programm muss die Eingabenummer auf dem Stapel vorhanden sein, bevor es ausgeführt wird.
Es hat ziemlich viel gedauert, um die Anzahl der verschwendeten Bytes auf 7 zu reduzieren!
Nach einer Überprüfung, ob es sich um eine Eingabe handelt
1
, überprüft das Programm jede Zahln
von 4 nacheinander, um festzustellen, ob es sich um eine perfekte Potenz handelt. Es tut dies, indem es mit beginnta=b=2
. Wenna^b == n
wir eine perfekte Kraft gefunden haben, verringern Sie die Anzahl der noch zu findenden perfekten Kräfte - wenn wir bereits die richtige Zahl gefunden haben, geben Sie sie aus.Wenn
a^b < n
,b
wird inkrementiert. Wenna^b > n
,a
wird inkrementiert. Wenn danna == n
haben wir festgestellt , dassn
nicht eine perfekte Leistung ist, so Schrittn
, Zurücksetzena
undb
.quelle
J, 29 Bytes
Basierend auf der @ LegionMammal978- Methode .
Verwendung
Erläuterung
quelle
JavaScript (ES7), 104 Byte
Berechnet alle Potenzen, die nicht größer als n² sind, sortiert die resultierende Liste und nimmt das n-te Element.
quelle
Java, 126
quelle