帮我看一下哪里错了 输入一个整数,输出该整数的所有素数因子。 例如, 输入:120 输出:2 2 2 3 5

#include
using namespace std;
int main()
{
int n;
cout << "请输入一个整数" << endl;
cin >> n;
int a = 2;
if (n == 1)
cout << "无素数因子" << endl;
for(int a=2;a<=n;a++)
{
if (n % a == 0)
{
cout << a << endl;
n /= a;
}
else
{
continue;
}
}
return 0;
}

在输出a之前需要加多一个判断,即a是否是质数,是的话输出,不是的话continue

假设输入120,for 第一次循环 n % a == 0 条件满足,n /= a 后 n 变成60,而下一次循环 a++ 变成3了,后面就无法在从 a = 2 开始,所以为了找到满足条件的 a ,可以在 n /= a 后面再加一个 a--,抵消下一次的 a++。

if (n % a == 0)
{
    cout << a << endl;
    n /= a;
    a--;
}