Совершенная сила - это число форм a**b
, где a>0
и b>1
.
Например, 125
это совершенная сила, потому что она может быть выражена как 5**3
.
Цель
Ваша задача состоит в том, чтобы написать программу / функцию, которая найдет n
идеальную степень, учитывая положительное целое число n
.
Спекуляции
- Первая совершенная сила - это
1
(что есть1**2
). - Ввод / вывод в любом разумном формате.
- Встроенные модули разрешены .
Дальнейшая информация
счет
Это код-гольф . Самое короткое решение в байтах побеждает.
Testcases
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
Пропитанная монахиня
источник
источник
Ответы:
Желе , 11 байт
Попробуйте онлайн! ,
Фон
Каждое натуральное число k можно однозначно разложить на множители как произведение степеней первых m простых чисел, т. Е. K = p 1 α 1 1 p m α m , где α m > 0 .
Мы имеем, что a b ( b> 1 ) для некоторого натурального числа a тогда и только тогда, когда b является делителем всех показателей α j .
Таким образом, целое число k> 1 является совершенной степенью тогда и только тогда, когда gcd (α 1 , ⋯, α m ) ≠ 1 .
Как это устроено
источник
a_n > 0
?" Мне кажется, что при факторизации для 21 ^ 2 показатели степени при p = 2 и p = 5 равны нулю.Mathematica, 34 байта
Создает массив n × n A ij = i 1+ j , выравнивает его и возвращает n- й элемент.
источник
CJam, 16 байтов
Проверьте это здесь.
объяснение
Это использует идею, аналогичную ответу LegionMammal's Mathematica.
источник
Октава,
573130 байтЯ просто снова заметил, что Octave не нуждается
ndgrid
(в то время как Matlab делает) =)источник
05AB1E , 12 байтов
Код:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
Sage (версия 6.4, возможно, и другие):
6463Создает лямбда-функцию, которая возвращает
n
идеальную силу. Мы полагаемся на то, что оно находится в первыхn^2
целых числах. (1+n^2
Необходим дляn=1,2
.0+k
Бит необходимо преобразоватьint(k)
вInteger(k)
.)Отпусти за
xrange
->range
, спасибо Деннис.Просто забавный факт:
0
это прекрасная сила по меркам Мудреца, к счастью, потому что тогда1
1-й элемент списка, а не 0-й :)источник
is_perfect_power()
Pyth -
1211 байтОчевидный подход, просто проходит и проверяет все цифры.
Тестовый пакет .
источник
MATL, 9 байт
Попробуйте онлайн
Это порт октавного решения Flawr для MATL, составьте матрицу степеней до
n^(n+1)
и получитеn
-й.источник
Юлия,
6432 байтаЭто анонимная функция, которая принимает целое число и возвращает целое число. Чтобы вызвать его, присвойте его переменной.
Идея здесь такая же , как и в Mathematica LegionMammal в ответ : Мы берем внешнее произведение целых чисел 1 до п с 2 до п + 1, свернуть полученную матрицу по столбцам, принимать уникальные элементы, сортировать и получить п - й элемент ,
Попробуйте онлайн! (включает все тестовые случаи)
источник
JavaScript (ES6), 87
Меньше гольфа
Тестовое задание
источник
На самом деле, 18 байтов (не конкурирующих)
Попробуйте онлайн! (может не работать из-за необходимости обновления)
Это решение не конкурирует, потому что я исправил ошибку
E
после того, как эта проблема была опубликована.Объяснение:
источник
> <>, 108 байт
Эта программа требует, чтобы входной номер присутствовал в стеке перед запуском.
Потребовалось довольно много, чтобы уменьшить количество потерянных байтов до 7!
После проверки, чтобы увидеть, является ли ввод
1
, программа проверяет каждое числоn
, начиная с 4, чтобы увидеть, является ли это идеальной силой. Это делается, начиная сa=b=2
. Еслиa^b == n
мы нашли совершенную силу, то уменьшаем количество оставшихся совершенных способностей - если мы уже нашли правильное число, выводим.Если
a^b < n
,b
увеличивается. Еслиa^b > n
,a
увеличивается. Тогда, еслиa == n
мы обнаружили, чтоn
это не идеальная сила, так что увеличивайтеn
, сбрасывайтеa
иb
.источник
J, 29 байт
На основе @ LegionMammal978 по методу .
использование
объяснение
источник
JavaScript (ES7), 104 байта
Работает путем вычисления всех степеней, не превышающих n², сортировки результирующего списка и получения n-го элемента.
источник
Ява, 126
источник