//对n使用唯一分解定理:
任意一个大于1的正整数都可以写成若干个素数幂的乘积
int base[1005],p[1005],cnt=0;//base[]存底数,p[]存指数(个数)
void only(int n){
for(int i=2;i*i<=n;i++){//O (根号n)
if(n%i==0)//试除
{
base[++cnt]=i;//i为底数
while(n%i==0){//求i的个数
p[cnt]++;//第cnt个质因数的个数++
n=n/i;
}
}
}
if(n>1){//保证>sqrt(n)的数也被存入
base[++cnt]=n;
p[cnt]=1;
}
}
唯一分解定理模板
于 2024-04-21 15:17:21 首次发布