题目描述
分解质因数
利用试除法
时间复杂度的计算和试除法求质数一样可以减少到sqrt(n)
当质数为2时只需要除以一次即可,故时间复杂度最好是O(logn)
C++ 代码
#include<iostream>
using namespace std;
int n;
void divide(int 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)printf("%d %d\n",x,1); //最多只有一个比√x大的质数,考虑进去
cout<<endl;
}
int main()
{
cin>>n;
while(n--)
{
int x;
cin>>x;
divide(x);
}
return 0;
}