题目:给定 n个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
#include <iostream>
#include <algorithm>
using namespace std;
void divide(int x)
{
//x中最多只包含一个大于sqrt(x)的质因子,所以先考虑比sqrt(x)小的;
//最后如果x还是>1,说明这就是大于sqrt(x)的唯一质因子,输出即可。
for (int i = 2; i <= x / i; 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;
}