算数基本定理
任何一个大于1的正整数都能被唯一分解为有限个质数的乘积。
其中是正整数,是质数,且满足
试除法
结合质数判定的试除法和埃筛,扫描2~之间的每个整数d,如果d能整除n,则从N中除掉所有的因子d,同时累计除去d的个数。
如果d是合数,那么组成他的因子一定在前面就被除去了,累计的d一定是质数。组成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;
}
网友评论