唯一分解定理

百度百科:

一个数n肯定能被分解成 n=p1a1 * p2a2 . . .*pnan
模板

int prime_fac[N],cnt=0,sum;
int prime_index[N];
void fact(int n){
   
    for(int i=2;i*i<=n;i++){
   
        if(n%i==0){
   
            cnt++;
            prime_fac[cnt]=i;
            prime_index[cnt]=0;
        }
        while(n%i==0){
   
            n/=i;
            prime_index[cnt]++;
            sum++;
        }
    }
    if(n!=1){
   
        cnt++;
        prime_fac[cnt]=n;//底数 
        prime_index[cnt]=1;//指数
		 sum++;
    }
}

prime_fac[cnt]存放的底数,都是质数
prime_index[cnt]存放的指数,也就是每个对数对应的指数