01/10/2018, 00:40
[Hỏi] Thuật toán phân tích thừa số nguyên tố
Đề bài yêu cầu phân tích 1 số ra thành tích các thừa số nguyên tố ạ. Nhưng lại phải là số lớn nhân trước. VD: 999 = 37x3x3x3
Em tìm hiểu thì có 1 thuật toán, em cũng có code lại như vậy
int main() {
int n;
int i = 2;
cin >> n;
while (n != 1)
{
if (n % i == 0)
{
cout << i <<"*";
n /= i;
}
else
i++;
}
return 0;
}
Code này chỉ có thể ra là 3x3x3x37. Cho em xin hỏi là có thể đảo ngược lại để thỏa với yêu cầu của đề không ạ
Bài liên quan
lúc tìm được ước số thay vì xuất nó ra thì bỏ nó vô 1 mảng, xong xuôi xuất ngược mảng đó lại
với n là integer thì n dương tối đa là 231 - 1 nên có tối đa 31 thừa số nguyên tố. Lập cái mảng
int thuaSoNgTo[31]
là dư sức rồi.Công nhận bài này thì cách dễ nhất là nhét vào mảng.
Một cách khác:
Cách của anh vẫn là in xuôi mà
Xuôi ngược gì chả được :v
Còn nếu muốn ngược thì sửa cái điều kiện trong vòng for lớn thôi, chứ đâu khó khăn gì
Sửa giúp em với ạ, em mới học thôi
Tự vận động đi nhé :v cho code đến thế rồi mà con hỏi.
Nếu sửa lại thì thuật toán sẽ bị sai ạ
Debug đi.
Còn bí quá thì bạn tạo 1 mảng, lưu vào rồi đọc ngược giống như anh Trí nói ở post đầu đó
Thuật toán này là xét i = 2 rồi lấy số n chia cho i tới khi không chia được thì tăng lên,
Cách đó em làm được rồi ạ
app dung