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);
}
本文介绍了一种高效分解整数为素因子的算法,包括去除所有2的倍数因子,枚举奇数因子,以及处理质数情况,确保算法的时间复杂度为logN。
481

被折叠的 条评论
为什么被折叠?



