Коллекция положительных целых чисел 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 факторизации для этих чисел соответственно, и я не уверен почему.