Idealna moc to szereg postaci a**b
, gdzie a>0
i b>1
.
Na przykład 125
jest doskonałą mocą, ponieważ można ją wyrazić jako 5**3
.
Cel
Twoim zadaniem jest napisanie programu / funkcji, która znajdzie n
-tą idealną moc, biorąc pod uwagę dodatnią liczbę całkowitą n
.
Okular
- Pierwszą idealną mocą jest
1
(która jest1**2
). - Wejście / wyjście w dowolnym rozsądnym formacie.
- Wbudowane są dozwolone .
Dalsza informacja
Punktacja
To jest golf golfowy . Najkrótsze rozwiązanie w bajtach wygrywa.
Przypadki testowe
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
Leaky Nun
źródło
źródło
Odpowiedzi:
Galaretka , 11 bajtów
Wypróbuj online! .
tło
Każda dodatnia liczba całkowita k może być unikatowo faktoryzowana jako iloczyn mocy pierwszych m liczb pierwszych, tj. K = p 1 α 1 ⋯ p m α m , gdzie α m > 0 .
Mamy że b ( b> 1 ) dla niektórych liczba całkowita dodatnia wtedy i tylko wtedy, gdy b jest dzielnikiem wszystkich wykładników a j .
Zatem liczba całkowita k> 1 jest potęgą doskonałą wtedy i tylko wtedy, gdy gcd (α 1 , ⋯, α m ) ≠ 1 .
Jak to działa
źródło
a_n > 0
?” Wydaje mi się, że w faktoryzacji dla 21 ^ 2 wykładniki dla p = 2 i p = 5 wynoszą zero.Mathematica, 34 bajty
Generuje tablicę n × n A ij = i 1+ j , spłaszcza ją i zwraca n- ty element.
źródło
CJam, 16 bajtów
Sprawdź to tutaj.
Wyjaśnienie
Wykorzystuje to podobny pomysł do odpowiedzi Mathematica z LegionMammal.
źródło
Oktawa,
573130 bajtówWłaśnie zauważyłem, że Octave nie potrzebuje
ndgrid
(podczas gdy Matlab tak) =)źródło
05AB1E , 12 bajtów
Kod:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
Sage (wersja 6.4, prawdopodobnie także inne):
6463Tworzy funkcję lambda, która zwraca
n
idealną moc. Polegamy na tym, że znajduje się w pierwszychn^2
liczbach całkowitych. (The1+n^2
jest koniecznen=1,2
. Ten0+k
bit jest konieczne, aby przekształcićint(k)
doInteger(k)
).Byte off dla
xrange
->range
, dzięki Dennis.Ciekawostka:
0
to idealna moc według standardów Sage'a, na szczęście, ponieważ1
jest to pierwszy element listy, a nie zero :)źródło
is_perfect_power()
Pyth -
1211 bajtówOczywiste podejście, po prostu przechodzi i sprawdza wszystkie liczby.
Pakiet testowy .
źródło
MATL, 9 bajtów
Wypróbuj online
Jest to port rozwiązania Flawr Octave dla MATL, stwórz matrycę mocy do
n^(n+1)
, i zdobądźn
-ty.źródło
Julia,
6432 bajtyJest to anonimowa funkcja, która przyjmuje liczbę całkowitą i zwraca liczbę całkowitą. Aby go wywołać, przypisz go do zmiennej.
Pomysł tutaj jest taki sam jak w odpowiedzi Mathematica z LegionMammal : bierzemy zewnętrzny iloczyn liczb całkowitych od 1 do n z 2 do n + 1, zwijamy wynikową macierz kolumnowo, bierz unikalne elementy, sortuj i uzyskaj n- ty element .
Wypróbuj online! (obejmuje wszystkie przypadki testowe)
źródło
JavaScript (ES6), 87
Mniej golfa
Test
źródło
Właściwie 18 bajtów (niekonkurujących)
Wypróbuj online!(może nie działać z powodu konieczności aktualizacji)
To rozwiązanie nie konkuruje, ponieważ naprawiłem błąd
E
po opublikowaniu tego wyzwania.Wyjaśnienie:
źródło
> <>, 108 bajtów
Ten program wymaga obecności numeru wejściowego na stosie przed uruchomieniem.
Sporo czasu zajęło zmniejszenie liczby zmarnowanych bajtów do 7!
Po sprawdzeniu, czy dane wejściowe są
1
, program sprawdza każdą liczbęn
, od 4 z kolei, aby sprawdzić, czy jest to doskonała moc. Robi to, zaczynając oda=b=2
. Gdybya^b == n
znaleźliśmy idealną moc, zmniejsz więc liczbę idealnych mocy, które pozostały do znalezienia - jeśli już znaleźliśmy właściwą liczbę, wyjdź.W przypadku
a^b < n
,b
jest zwiększany. W przypadkua^b > n
,a
jest zwiększany. Następnie, jeślia == n
odkryliśmy, żen
nie jest to doskonała moc, więc zwiększajn
, resetuja
ib
.źródło
J, 29 bajtów
Opierając się na @ LegionMammal978 za metody .
Stosowanie
Wyjaśnienie
źródło
JavaScript (ES7), 104 bajty
Działa poprzez obliczenie wszystkich mocy nie większych niż n², posortowanie wynikowej listy i pobranie n-tego elementu.
źródło
Java, 126
źródło