算法训练 素因子去重

Posted a-little-nut

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法训练 素因子去重相关的知识,希望对你有一定的参考价值。

素因子去重

#include<iostream>
#include<math.h>
#include<set>
using namespace std;
bool isprime(long long int n){
    if(n==1) return false;
    for(int i=2; i<=sqrt(n); i++)
        if(n%i==0) return false;
    return true;
}
int main(){
    long long int n, ans=1;
    cin>>n;
    set<int> s;
    while(!isprime(n)){
        for(int i=2; i<=sqrt(n); i++)
            if(isprime(i)&&n%i==0){
                s.insert(i);
                n/=i;
                break;
            }
    }
    s.insert(n);
    for(set<int>::iterator it=s.begin(); it!=s.end(); it++)
        ans*=(*it);
    cout<<ans<<endl;
    return 0;
} 

以上是关于算法训练 素因子去重的主要内容,如果未能解决你的问题,请参考以下文章

算法训练——素因子去重

2021.12.10--《21-22-1蓝桥训练8》

hdu 6287 口算训练(可持久化线段树+线性筛)

最大素因子算法优化

随机素数测试(Miller_Rabin算法)和求整数素因子(Pollard_rho算法)

大素数判断和素因子分解(miller-rabin,Pollard_rho算法)