算法訓練 素因子去重

問題描述

  給定一個正整數n,求一個正整數p,滿足p僅包含n的所有素因子,且每個素因子的次數不大於1

輸入格式

  一個整數,表示n

輸出格式

  輸出一行,包含一個整數p。

樣例輸入

1000

樣例輸出

10

數據規模和約定

  n<=10^12
  樣例解釋:n=1000=2^3*5*3,p=2*5=10

/******************************************
*其實這題可以看成是求一個數的質因子
*我們求出來的時候只要保留一個相同的因子就可以了
******************************************/
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	
   	long long int n;
   	cin >> n;
   	int i = 2;
   	long long int sum = 1;
   	while(n != 1)
   	{
   		if(n % i == 0)
   		{
   			while(n % i == 0)
		       {
			   	n /= i;
		       }	
		       sum *= i;
		}
		else
		{
			i++;
		}
   			
	}
	cout <<sum ;
    return 0;
}
  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章