Учитывая положительное целое число всегда можно найти кортеж целых чисел таким образом, что и
Здесь | означает, что кратно , скажем "a делит b". Если все записи должны быть не менее . Для у нас нет такого фактора, и поэтому мы получаем пустой кортеж.
Если вам интересно, откуда это взялось: Это разложение известно как разложение по инвариантным факторам в теории чисел и используется в классификации конечно порожденных абелевых групп.
Вызов
Учитывая выходной все такие кортежи для данного ровно один раз, в любом порядке , как. Стандартные форматы вывода последовательности разрешены.
Примеры
1: () (empty tuple)
2: (2)
3: (3)
4: (2,2), (4)
5: (5)
6: (6)
7: (7)
8: (2,2,2), (2,4), (8)
9: (3,3), (9)
10: (10)
11: (11)
12: (2,6), (12)
108: (2,54), (3,3,12), (3,6,6), (3,36), (6,18), (108)
Связанный: http://oeis.org/A000688 , перечислите все мультипликативные разбиения n
12,3,3
)Ответы:
Haskell,
666260 байтовПопробуйте онлайн!
источник
05AB1E , 13 байтов
Попробуйте онлайн!
источник
Òœ€.œP
чтобы получить списки. У меня действительно были проблемы с нахождением чего-то более короткого. Если бы был встроенный аналог,Åœ
но для продукта вместо суммы. ;)Желе , 17 байт
Попробуйте онлайн!
источник
JavaScript (V8) ,
7370 байтПечатает кортежи в порядке убывания( км, км - 1, . , ,, к1) ,
Попробуйте онлайн!
комментарии
источник
05AB1E ,
171514 байтовОчень медленно для больших тестовых случаев.
-1 байт благодаря @Grimy .
Попробуйте онлайн.
Объяснение:
источник
JavaScript, 115 байт
Позже напишу объяснение
источник
Wolfram Language (Mathematica) ,
7876727167 байтПопробуйте онлайн!
Рекурсивное дерево поиска.
Решение по грубой силе, 64 байта :
Тривиальная модификация моего решения Mathematica для перечисления всех мультипликативных разбиений n .
Так как это нужно проверитьNN кортежи, попробуйте более эффективную версию, используя ту же логику .
источник
Japt , 22 байта
Попытайся
источник