1.将整数分解成素因子的方法
1.除以所有以2为倍数的因子
2.枚举以i为倍数的因子的整数,此时i肯定为奇数
3.防止n本身为质数,比如:2147483647
该方法时间复杂度为log N
实现如下:
void getPrimeFactor(int n,set<int>& arr)
{
//除以所有以2为倍数的因子
if(n%2==0){
while(n%2==0){
n/=2;
}
arr.insert(2);
}
//枚举以i为倍数的因子的整数,此时i肯定为奇数
for(int i=3;i<=sqrt(n);i+=2){
if(n%i==0){
while(n%i==0){
n/=i;
}
arr.insert(i);
}
}
//防止n本身为质数,比如:2147483647
if(n>2) arr.insert(n);
}