Простая, но, надеюсь, не совсем тривиальная задача:
Напишите программу или функцию, которая суммирует числа, k
разделяющие число n
. Более конкретно:
- Входные данные: два натуральных числа
n
иk
(или упорядоченная пара целых чисел и т. Д.) - Вывод: сумма всех положительных делителей
n
этихk
степеней целых чисел
Например, 11! = 39916800 имеет шесть делителей , которые являются кубами, а именно : 1, 8, 27, 64, 216 и 1728. Таким образом , данные входов 39916800
и 3
, программа должна вернуть их сумму, 2044
.
Другие тестовые случаи:
{40320, 1} -> 159120
{40320, 2} -> 850
{40320, 3} -> 73
{40320, 4} -> 17
{40320, 5} -> 33
{40320, 6} -> 65
{40320, 7} -> 129
{40320, 8} -> 1
{46656, 1} -> 138811
{46656, 2} -> 69700
{46656, 3} -> 55261
{46656, 4} -> 1394
{46656, 5} -> 8052
{46656, 6} -> 47450
{46656, 7} -> 1
{1, [any positive integer]} -> 1
Это код гольф, поэтому чем короче ваш код, тем лучше. Я приветствую гольф-код на всех языках, даже если какой-то другой язык может обходиться меньшим количеством байтов, чем ваш.