Колекція додатних цілих чисел d_1 d_2 ... d_k
- це факторизація натурального числа, n
якщо
d_1 * d_2 * ... * d_k = n
Кожне додатне ціле число має унікальну основну факторизацію , але в цілому вони також мають фактори, в яких деякі складові є складовими. Напр
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Напишіть програму, функцію, дієслово чи подібне, яке приймає за введення одне додатне ціле число і повертає або друкує повний перелік його різних факторів. Факторизації можуть бути вироблені в будь-якому порядку, і їх умови можуть бути в будь-якому порядку, але жодна з двох не повинна бути перестановкою один одного. Факторизації можуть не включати 1
два винятки: для введення n
ви можете дати факторизацію n*1
замість n
; а для введення 1
ви можете дати факторизацію 1
замість порожнього списку.
Можна припустити, що вхід буде знаходитися в діапазоні підписаного 32-бітного цілого числа. Якщо вихідний рядок є рядком, слід чітко розмежовувати розмежування чисел у межах факторизації та розмежування факторизацій, але це не обов'язково (наприклад) для приєднання факторів до *
.
Ваш код повинен мати можливість обробляти будь-який дійсний вхід протягом 10 хвилин на розумній настільній машині.
Приклади
1 [[]]
or [[1]]
or [[1 1]]
7 [[7]]
or [[7 1]]
or [[1 7]]
12 [[12] [6 2] [4 3] [2 3 2]]
or variants
16 [[2 2 2 2] [2 2 4] [2 8] [4 4] [16]]
or variants
901800900 a list of 198091 factorisations
1338557220 a list of 246218 factorisations
901800900
та1338557220
десь там, де ми можемо їх перевірити? Мій код дає мені 2048 та 1024 факторизації для цих чисел відповідно, і я не знаю чому.