Top

log(n)分解一个数的所有素因子模板


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	
//n为要分解的数
//Fac数组存所有质因子
//cnt为质因子个数
void primeFactor(int n){
while(n%2==0){
Fac[cnt++]=2;
n/=2;
}
// 经过第二步, 此时 n 一定为奇数
// 并且不存在偶数的素因子
// 所以我们可以跳过所有偶数 (i += 2)
for(int i=3;i<=sqrt(n);i+=2){
while(n%i==0){
Fac[cnt++]=i;
n/=i;
}
}
//此处为了防止是一个大于 2 的素数
if(n>2)Fac[cnt++]=n;
}


未经允许不得转载: Anoyer's Blog » log(n)分解一个数的所有素因子模板