Учитывая целое число n >= 2
, выведите наибольший показатель степени в ее первичной факторизации. Это последовательность OEIS A051903 .
пример
Пусть n = 144
. Его главная факторизация есть 2^4 * 3^2
. Самый большой показатель степени 4
.
Тестовые случаи
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
Ответы:
05AB1E , 2 байта
Попробуйте онлайн!
Как?
источник
Python 2 ,
625756 байтПопробуйте онлайн!
источник
f=lambda n,k=0:max(k%n-n%(k/n+2)**(k%n)*n,k<n**2and f(n,k+1))
Желе , 3 байта
Попробуйте онлайн!
Это также работает в M . Попробуйте онлайн!
источник
Хаскелл ,
6160504846 байтов-2 байта благодаря xnor
Попробуйте онлайн!
45 байт с импортом:
Попробуйте онлайн!
источник
0^
мило, но короче просто проверить состояние как логическое значение.Ом v2 , 2 байта
Попробуйте онлайн!
Объяснение?
Нет.
источник
Python 2 , 78 байт
Попробуйте онлайн!
-5 благодаря овс .
Этот ответ не делает основные проверки. Вместо этого он использует тот факт, что наивысший показатель простого множителя будет больше или равен показателю любого другого фактора при любой факторизации числа.
источник
Japt
-h
,97 байтПопытайся
источник
ü
создает подмассивы равных значений. Это делает также сортировать по стоимости первого , но это не имеет значения здесь.Mathematica, 27 байт
Попробуйте онлайн!
источник
Max@@Last/@FactorInteger@#&
. К сожалению, это не спасает байты.MATL , 4 байта
Попробуйте онлайн!
источник
Брахилог , 5 байт
Попробуйте онлайн!
объяснение
источник
Шелуха , 5 байт
Попробуйте онлайн!
p
- Получает главные факторы.g
- Группы смежных значений.mL
- Получает длины каждой группы.▲
- максимум.источник
APL (Dyalog) , 19 байтов
Попробуйте онлайн!
Как?
2pco⎕
- 2D массив простых факторов и показателей1↓
- отбросить факторы⌈/
- максимумисточник
Javascript 54 байта
* при условии бесконечного стека (как это делается в задачах Code-Golf)
источник
PARI / GP, 24 байта
Если я не считаю
n->
часть, это 21 байт.источник
Октава , 25 байт
Попробуйте онлайн!
объяснение
factor
производит массив (возможно, повторяющихся) простых показателей. Второй выводmode
дает количество раз, когда появляется режим (т.е. наиболее повторяющаяся запись).источник
Pyth , 7 байт
Попробуй это здесь.
источник
eS/LPQP
(7 байт),eSlM.gkP
(8 байт).Python 2 ,
9084 байтаПопробуйте онлайн!
источник
Gaia , 4 байта
Попробуйте онлайн!
ḋ
- Вычисляет простую факторизацию в виде пар [простое, экспонента] .⌠
- Карта и собрать результат с максимальным значением.)
- Последний элемент (показатель степени).)
- Последний элемент (максимальный показатель)Gaia , 4 байта
Попробуйте онлайн!
ḋ
- Вычисляет простую факторизацию в виде пар [простое, экспонента] .)¦
- Карта с последним элементом (экспонента).⌉
- Получает максимальный элемент.источник
МОЙ , 4 байта
Попробуйте онлайн!
Объяснение?
источник
Октава : 30 байт
a=factor(x)
возвращает вектор , содержащий простые множителиx
. Это вектор, отсортированный в порядке возрастания, где умножение всех чисел вfactor(x)
даетx
себя так, что каждое число в векторе является простым.histc(...,a)
вычисляет гистограмму для вектора простого множителя, где ячейки являются основными множителями. Гистограмма подсчитывает, сколько раз мы видели каждое простое число, получая, таким образом, показатель степени каждого простого числа. Здесь мы можем немного обмануть, потому что, хотя мыfactor(x)
будем возвращать повторяющиеся числа или ячейки, только одна из ячейок будет отображать общее количество раз, когда мы видим простое число.max(...)
таким образом возвращает наибольший показатель.Попробуйте онлайн!
источник
Алиса , 17 байт
Попробуйте онлайн!
объяснение
Это просто структура для простых арифметических программ с десятичным вводом / выводом.
...
Фактическая программа, которая уже имеет вход в стеке и оставляет выход на вершине стека.Алиса на самом деле имеет встроенные модули для получения простой факторизации целого числа (даже с парами простых чисел), но самое короткое, что я придумал, используя их, на 10 байт длиннее этого.
Вместо этого идея состоит в том, что мы многократно делим одну копию каждого отдельного простого множителя из входных данных, пока не достигнем 1 . Количество шагов, которые это делает, равно наибольшему простому показателю. Мы будем использовать заголовок ленты как переменную счетчика.
источник
Юлия,
605240 байт-12 + коррекция благодаря Steadybox
источник
print()
. Кроме того, я не смог заставить код работать на TIO как есть, я полагаю, он работает на какой-то другой версии языка, недоступной там? Это прекрасно работает наprint(maximum(collect(values(factor(parse(BigInt,readline()))))))
print()
необходимо, потому что ответом должна быть полная программа (отображающая вывод) или функция (возвращающая вывод). В противном случае ваше решение в порядке. Кажется, что вы можете сохранить несколько байтов (и избежать печати) следующим образом:f(x)=maximum(collect(values(factor(x))))
На самом деле , 4 байта
Попробуйте онлайн!
источник
Python 2 , 64 байта
-4 байта благодаря H.PWiz.
Попробуйте онлайн!
Порт H.PWiz's Haskell ответ . Я делюсь этим только потому, что горжусь тем, что смог понять этот фрагмент кода на Haskell и перевести его. :П
источник
range(1,n)
работает?range(1, n)
производит все целые числа в [1, n).a
Аксиома, 61 байт
Впервые я обнаружил, что можно определить функцию без использования круглых скобок (). Вместо "f (n) ==" "fn ==" на один символ меньше ...
источник
рэкет ,
8379 байтПопробуйте онлайн!
(Я не уверен, что существует консенсус относительно того, что представляет собой полное решение Racket, поэтому я придерживаюсь соглашения Mathematica, что чистая функция считается.)
Как это работает
factorize
дает факторизацию как список пар:(factorize 108)
дает'((2 2) (3 3))
. Второй элемент пары задаетсяcadr
как сокращение для композицииcar
(заголовок списка) сcdr
(хвост списка).Я чувствую себя глупо,
(cadr (argmax cadr list))
чтобы найти максимум вторых элементов, ноmax
не работает со списками:(max (map cadr list))
не делает то, что мы хотим. Я не эксперт в Racket, поэтому, возможно, есть стандартный лучший способ сделать это.Ракетка, 93 байта
Попробуйте онлайн!
Как это работает
Альтернативная версия, которая не импортирует,
factorize
а делает все с нуля, более или менее. Функция(p m d)
находит наибольшую степеньd
деления,m
а затем мы просто находим наибольшее значение(p n d)
дляd
между2
иn
. (Нам не нужно ограничивать это простыми числами, поскольку не будет составной силы, которая работает лучше, чем простые силы.)источник
max
решение,(apply max (map cadr list)
но(cadr (argmax cadr list))
, к сожалению, короче.J, 9 байт
Макс
<./
всех простых показателей_&q:
Попробуйте онлайн!
источник
APL (NARS), 15 символов, 30 байтов
тест:
комментарий:
источник