正の整数のコレクションd_1 d_2 ... d_k
は、次の場合に正の整数の因数分解n
です。
d_1 * d_2 * ... * d_k = n
各正の整数には一意の素因数分解がありますが、一般に、いくつかの項が合成される因数分解もあります。例えば
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
入力として単一の正の整数を取り、その明確な因数分解の完全なリストを返すか出力するプログラム、関数、動詞、または同様のものを書きます。因数分解は任意の順序で作成でき、それらの用語は任意の順序で作成できますが、2つが互いの順列であってはなりません。因数分解には1
2つの例外が含まれない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の因数分解を行っていますが、その理由はわかりません。