AcWing 867. 分解质因数
原题链接
简单
作者:
永远热爱
,
2021-06-03 20:48:28
,
所有人可见
,
阅读 388
#include<iostream>
using namespace std;
void prime(int n)
{
for(int i=2;i<=n/i;i++) // 因为枚举的是质因数 所以可以从2开始枚举 另外为什么i<=n/i 因为每一个数中
// 至多有一个质因数大于等于sqrt(n) 因为如果有超过一个的质因数大于sqrt(n) 那么
// 他们的相乘一定大于n 就是悖论;所以我只用枚举到sqrt(n) 就好 (如果没有大于sqrt(n)的就输出s
// 如果有的话 再把最后那个大于sqrt(n)的质因数输出出来 就是下面的判断 if(n>1)
{
if(n%i==0)
{
int s=0;
while(n%i==0) //把这个质因数除干净
{
n/=i;
s++;
}
printf("%d %d\n",i,s);
}
}
if(n>1) printf("%d %d\n",n,1);
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
prime(n);
cout<<endl;
}
return 0;
}