AcWing 867. 分解质因数
原题链接
简单
作者:
阿飞被注册了
,
2021-04-14 16:24:36
,
所有人可见
,
阅读 177
当循环到n % i == 0时,i一定是一个质数,可以模拟一下:
优化:n只可能存在一个 > sqrt(n) 的质因数,如果存在两个,
相乘就大于 n了,所以 for循环 i < n / i就行,如果最后 n > 1,那么n自己就是一个质因数
C++ 代码
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
void div(int n)
{
for(int i = 2; i <= n/i; i++)
{
if(n % i == 0)
{
int cnt = 0;
while(n % i == 0)
{
n /= i;
cnt++;
}
cout << i <<" " << cnt << endl;
}
}
if(n > 1) cout << n << " " << 1 <<endl;
}
int main()
{
int n, m;
cin >> n;
while(n--)
{
cin >> m;
div(m);
puts("");
}
}