质因数分解-试除法

算数基本定理
任何一个大于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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容