算法训练 素因子去重

素因子去重

#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;
} 
posted @ 2019-02-09 21:46  A-Little-Nut  阅读(437)  评论(0编辑  收藏  举报