Editorial for C++ Bài 3.C4: Phân tích thừa số nguyên tố
Submitting an official solution before solving the problem yourself is a bannable offence.
Lời giải chi tiết:
Đầu tiên, các bạn cần khai báo kiểu dữ liệu của số nguyên \(N\) dựa vào khoảng giá trị đề bài đưa \(N\) (\(N<=10^{9}\)).
Bước 2, các bạn dùng lệnh cin
để nhập số vừa khai báo ở trên.
Bước 3, các bạn sử dụng vòng lặp for
bắt đầu từ i =2
và chạy cho đến khi \(i × i\) lớn hơn hoặc bằng \(n\). Mục đích của vòng lặp này là tìm các thừa số nguyên tố của \(n\).
- Giải thích cụ thể: Nếu \(n\) không phải là số nguyên tố và có một thừa số nguyên tố \(p\) lớn hơn \(\sqrt{n}\), thì sẽ tồn tại một thừa số nguyên tố \(q\) nhỏ hơn \(\sqrt{n}\) sao cho \(p × q =n\). Với điều này, khi bạn chạy vòng lặp từ \(i = 2\) đến \(\sqrt{n}\), nếu \(n\) có thừa số nguyên tố \(p\) lớn hơn \(\sqrt{n}\) , \(q\) sẽ được tìm thấy trong khoảng từ \(2\) đến \(\sqrt{n}\). Do đó, việc chỉ kiểm tra các thừa số trong khoảng \(2\) đến \(\sqrt{n}\) là đủ để phát hiện tất cả các thừa số của \(n\).
Bước 4, trong vòng lặp, kiểm tra xem \(i\) có phải là một thừa số nguyên tố của \(n\) hay không. Nếu có, thực hiện lặp while
để in ra \(i\) và chia \(n\) cho \(i\). Đồng thời in ra màn hình thừa số nguyên tố \(i\), sau đó chia \(n\) cho \(i\), giảm giá trị của \(n\) xuống sao cho \(n\) không chia hết cho \(i\) nữa.
Bước 5, kiểm tra nếu giá trị cuối cùng của \(n\) khác 1, in giá trị đó ra màn hình. Điều này xảy ra khi \(n\) chỉ còn một thừa số nguyên tố không thể chia hết cho bất kỳ số nguyên tố nào khác nữa.
Comments