任务:给出一个正整数,将N分解成质因数
说明:N的质因数要么是N本身(N是素数),要么一定小于等于,因此可以用小于等于的数对N进行试除,一直到不能除为止。这时候剩下的数如果不是1,那就是N最大的质因数。
复杂度:
输入:n 待分解的整数
输出:&tot 不同质因数的个数 a a[i]表示第i个质因数的值 b b[i]表示第i个质因数的指数
附上代码:
const int maxn=1e2+5;
int n,a[maxn],b[maxn],tot;
void factor()
{
int temp=sqrt(n+0.5);
tot=0;
int now=n;
for(int i=2;i<=temp;i++){
if(now%i==0){
a[++tot]=i;
b[tot]=0;
while(now%i==0){
++b[tot];
now/=i;
}
}
}
if(now!=1){
a[++tot]=now;
b[tot]=1;
}
}