求一个数的质因数

一个大佬的博客:https://blog.csdn.net/no_O_ac/article/details/82155804

大佬这种方法很巧妙:

这种方法的原理是:一个数(num>=2)必定可以写成只由质数相乘的形式

cin >> x;
vector<int> a;
for(int j = 2; j * j <= x; j++) {
    while(x % j == 0) {
//去掉重复的质因数,保证分化为都是质因数相乘;

        a.push_back(j);
        x /= j;
    }
}
if(x > 1)
//这样就可以避免从2--n去枚举,因为当num<i*i时必定num%i!=0,除非i==num;

    a.push_back(x);

 

posted @ 2022-02-12 09:46  次林梦叶  阅读(76)  评论(0)    收藏  举报