for(int i=2;i*i<=x;i++)·
最后最多剩下一个大于sqrt(x)
的质因子,看一下有没有,如果有的话,那再加上就好了。
就正常算质因子,算到一个了之后把这个的所有个数求出来。
最后如果x>1最后还有一个的话,那就再输出这最后一个。
#include <iostream>
#include <algorithm>
using namespace std;
void divide(int x)
{
for (int i = 2; i * i <= x; i ++ )
if (x % i == 0)
{
int s = 0;
while (x % i == 0) x /= i, s ++ ;
cout << i << ' ' << s << endl;
}
if (x > 1) cout << x << ' ' << 1 << endl;
cout << endl;
}
int main()
{
int n;
cin >> n;
while (n -- )
{
int x;
cin >> x;
divide(x);
}
return 0;
}