Kumpulan bilangan bulat positif d_1 d_2 ... d_k
adalah factorisation dari bilangan bulat positif n
jika
d_1 * d_2 * ... * d_k = n
Setiap bilangan bulat positif memiliki factorisation prima yang unik , tetapi secara umum mereka juga memiliki factorisation di mana beberapa istilahnya komposit. Misalnya
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Tulis sebuah program, fungsi, kata kerja, atau sejenisnya yang mengambil input bilangan bulat positif tunggal dan mengembalikan atau mencetak daftar lengkap dari faktorisasinya yang berbeda. Factorisations dapat diproduksi dalam urutan apa pun, dan ketentuannya mungkin dalam urutan apa pun, tetapi tidak boleh ada dua permutasi satu sama lain. Factorisations mungkin tidak termasuk 1
dengan dua pengecualian: untuk input n
Anda dapat memberikan factorisation n*1
alih-alih n
; dan untuk input 1
Anda dapat memberikan factorisation 1
daripada daftar kosong.
Anda dapat mengasumsikan bahwa input akan berada dalam kisaran integer 32-bit yang ditandatangani. Jika output adalah sebagai string, harus ada perbedaan yang jelas antara penentuan angka dalam faktorisasi dan penetapan faktorisasi, tetapi tidak perlu (misalnya) untuk faktor-faktor untuk digabungkan dengan *
.
Kode Anda harus mampu menangani input yang valid dalam waktu 10 menit pada mesin desktop yang masuk akal.
Contohnya
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
dan di1338557220
suatu tempat di mana kita dapat memeriksanya? Kode saya masing-masing memberi saya faktor 2048 dan 1024 untuk angka-angka itu, dan saya tidak yakin mengapa.