Nhờ mọi người cải tiện thuật toán của mình hoặc sáng tạo ra thuật toán mới của bài này
Xin chào mọi người. Nhờ mọi người giúp mình !
Đề bài: Viết chương trình phân tích một số nguyên N thành tích của các thừa số nguyên tố.
VD: 18 = 2 * 3 * 3
Đây là code của mình:
bool KiemTra(int n)
{
if (n == 2)
return true;
if (n % 2 == 0)
return false;
for (int i = 3; i <= sqrt(n); i += 2)
{
if (n % i == 0)
return false;
}
return true;
}
void PhanTich(int n)
{
for (int i = 2; i <= n; i++)
{
for (int j = i;;)
{
if (n % j == 0 && KiemTra(j))
{
cout << j << " * ";
n /= j;
}
else
break;
}
}
}
int main()
{
MINH:
int n;
do
{
cout << endl << "\nNhap vao so can phan tich: ";
cin >> n;
if (n < 2)
cout << "\nSo n khong hop le\n";
} while (n < 2);
PhanTich(n);
goto MINH;
getch();
return 0;
}
Tuy nhiên nhìn đoạn code trên, ai cũng thấy Thuật toán của mình khá “ngoằn ngoèo” và luôn dư 1 dấu *
ở cuối nên nhờ mọi người cải thiện giúp mình Thuật toán giải bài này, nếu không thì xin Thuật toán của mọi người mà hay hơn, mình sẽ tham khảo.
Cảm ơn rất nhiều