程序员算法

质因数分解-试除法

2020-08-04  本文已影响0人  dachengquan

算数基本定理
任何一个大于1的正整数都能被唯一分解为有限个质数的乘积。N=p_1^{c_1}p_2^{c_2}...p_n^{c_n}
其中c_i是正整数,p_i是质数,且满足p_1<p_2<...<p_m
试除法
结合质数判定的试除法和埃筛,扫描2~\sqrt{N}之间的每个整数d,如果d能整除n,则从N中除掉所有的因子d,同时累计除去d的个数。
如果d是合数,那么组成他的因子一定在前面就被除去了,累计的d一定是质数。组成N,大于\sqrt N的质数最多有1个,如果存在就是最后剩下的N。

int get_primes(int n){
    for(int i = 2;i<=n/i;i++){
        if(n%i==0){
            int k = 0;
            while(n%i==0){
                k++;
                n/=i;
            }
            cout<<i<<"^"<<k<<endl;
        }
    }
    if(n>1) cout<<n<<"^"<<1<<endl;
    cout<<endl;
}
上一篇 下一篇

猜你喜欢

热点阅读