Вызов
Если задано положительное целое число, верните произведение его делителей, включая себя.
Это последовательность A007955 в OEIS .
Тестовые случаи
1: 1 2: 2 3: 3 4: 8 5: 5 6: 36 7: 7 8: 64 9: 27 10: 100 12: 1728 14: 196 24: 331776 25: 125 28: 21952 30: 810000
счет
Это код-гольф , поэтому выигрывает самый короткий ответ на каждом языке!
Ответы:
05AB1E , 2 байта
Попробуйте онлайн!
объяснение
источник
Japt , 3 байта
Попробуйте онлайн!
объяснение
источник
â
и×
при написании этого ответаЖеле , 3 байта
Попробуйте онлайн!
источник
MATL , 3 байта
Попробуйте онлайн!
источник
Python 3 ,
4241 байтСохранено 1 байт благодаря Leaky Nun!
Попробуйте онлайн!
источник
(1,k)[i%k<1]
эквивалентноk**(i%k<1)
Haskell ,
3534 байта-1 благодаря овсам
Попробуйте онлайн!
источник
Pyth , 6 байт
Тестовый пакет .
источник
Алиса , 12 байт
Попробуйте онлайн!
объяснение
Это просто обычная структура для десятичного ввода-вывода:
Тогда программа выглядит так:
источник
Нейм , 2 байта
Попробуйте онлайн!
источник
R , 28 байт
Попробуйте онлайн!
источник
Машинный код x86-64, 26 байт
Приведенный выше код определяет функцию, которая принимает один параметр (входное значение, положительное целое число)
EDI
(в соответствии с соглашением о вызовах System64 AMD64, используемым в Gnu / Unix) и возвращает один результат (произведение делителей) вEAX
.Внутренне он вычисляет произведение делителей, используя (крайне неэффективный) итерационный алгоритм, аналогичный представлению C в pizzapants184 . В основном, он использует счетчик для циклического перебора всех значений между 1 и входным значением, проверяя, является ли текущее значение счетчика делителем входного значения. Если это так, он умножает это на текущий итоговый продукт.
Неуправляемый язык ассемблера
Тот факт, что
IDIV
инструкция использует жестко запрограммированные операнды для дивидендов, немного ограничивает мой стиль, но я думаю, что это довольно хорошо для языка, который не имеет встроенных модулей, но имеет базовые арифметические и условные ветви!источник
TI-Basic (TI-84 Plus CE), 24 байта
Полная программа: запрашивает ввод у пользователя; возвращает выходные данные
Ans
, специальная переменная, которая (в основном) хранит значение последнего вычисленного значения.Объяснение:
источник
C (gcc),
5248 байтов-4 байта благодаря Коди Грей
Функция, которая принимает целое число и возвращает произведение его делителей.
Попробуйте онлайн!
Ungolfed:
источник
p*=
выражения и (3) помещая оператор в телоfor
цикла, чтобы пропустить запятую. Мне также нравится использовать глобальные переменные, а не добавлять дополнительные параметры. Это позволяет избежать неопределенного поведения без затрат на байты. Окончательная версия:p,a;f(x){for(p=1,a=x;a;--a)p*=x%a?1:a;return p;}
return p;
сp=p;
и сохранить пять байтов.p,a;f(x)
наf(x,p,a)
.return p;
и сохранить не пять, а девять байтов. ( TIO )JavaScript (ES7), 32 байта
Сэкономили пару байтов, позаимствовав совет Лики о решении Python для музыканта .
Попытайся
Альтернатива (ES6), 32 байта
источник
(n%i?1:i)
? (Однако это не спасло бы ни одного байта.)TI-Basic,
241413 байтовСохранено 1 байт благодаря lirtosiast
источник
int(
?QBIC , 22 байта
объяснение
источник
Пари / ГП , 18 байт
Попробуйте онлайн!
источник
PHP , 45 байт
Попробуйте онлайн!
источник
Mathematica, 17 байт
для тех, кто не может просмотреть удаленные ответы (ответ DavidC), это код в Mathematica с помощью @MartinEnder
источник
Язык программирования Шекспира , 353 байта
Безголовая версия:
Я использую этот компилятор SPL для запуска программы.
Бежать с:
источник
Python 3, 45 байт
lambda _:_**(sum(_%-~i<1for i in range(_))/2)
Позвольте
x
быть числом. Обаy
иz
будут делителямиx
еслиy * z = x
. Поэтомуy = x / z
. Давайте предположим, что числоd
имеет 6 divisiors, из - за этого наблюдения делители будетa
,b
,c
,d / a
,d / b
,d / b
. Если мы умножим все эти числа (точка загадки), мы получимd * d * d = d ^ 3
. В общем случае дляe
целого рядаf
делителей произведение этих делителей будетe ^ (f / 2)
, чем и занимается лямбда.Попробуйте онлайн!
источник
МОЙ , 4 байта
Hex:
Объяснение:
источник
Java (OpenJDK 8) ,
5251 байтПопробуйте онлайн!
Спасибо LeakyNun за сохранение 1 байта!
источник
n->{int r=n,d=0;for(;++d<n;)r*=n%d<1?d:1;return r;}
RProgN 2 , 2 байта
Другой язык со встроенными модулями для
divisors
иproduct
.Попробуйте онлайн!
источник
Perl 6 , 22 байта
Попробуйте онлайн!
источник
J, 19 байт
Объяснение будет позже ...
Попробуйте онлайн!
источник
Октава , 27 байт
Это определяет анонимную функцию.
Попробуйте онлайн!
источник
Python 2 ,
5250 байтm*=n%i>0 or i
Попробуйте онлайн!
источник
Фортран 95, 88 байт
Попробуйте онлайн!
Ungolfed:
источник
Аксиома, 23 байта
Это перевод в аксиоме решения алефальфа
источник