Một bộ sưu tập các số nguyên dương d_1 d_2 ... d_k
là một phân tích nhân tử của một số nguyên dương n
nếu
d_1 * d_2 * ... * d_k = n
Mỗi số nguyên dương có một thừa số nguyên tố duy nhất , nhưng nói chung chúng cũng có các thừa số trong đó một số thuật ngữ là hợp số. Ví dụ
12 = 6 * 2 = 4 * 3 = 3 * 2 * 2
Viết chương trình, hàm, động từ hoặc tương tự, lấy đầu vào là một số nguyên dương duy nhất và trả về hoặc in một danh sách đầy đủ các yếu tố riêng biệt của nó. Các yếu tố có thể được tạo ra theo bất kỳ thứ tự nào, và các điều khoản của chúng có thể theo bất kỳ thứ tự nào, nhưng không có hai yếu tố nào là hoán vị lẫn nhau. Các yếu tố có thể không bao gồm 1
hai trường hợp ngoại lệ: đối với đầu vào, n
bạn có thể đưa ra hệ số n*1
thay vì n
; và đối với đầu vào, 1
bạn có thể đưa ra hệ số 1
thay vì danh sách trống.
Bạn có thể giả sử rằng đầu vào sẽ nằm trong phạm vi của số nguyên 32 bit đã ký. Nếu đầu ra là một chuỗi, cần có sự phân biệt rõ ràng giữa việc phân định số trong một yếu tố và phân định các yếu tố, nhưng không cần thiết (ví dụ) cho các yếu tố được nối với một *
.
Mã của bạn sẽ có khả năng xử lý bất kỳ đầu vào hợp lệ nào trong vòng 10 phút trên một máy tính để bàn hợp lý.
Ví dụ
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
và1338557220
nơi nào đó chúng ta có thể kiểm tra chúng không? Mã của tôi lần lượt cho tôi 2048 và 1024 nhân tố cho những con số đó và tôi không chắc tại sao.