题目
一个整数 a是一个完全平方数,是指它是某一个整数的平方,即存在一个整数 b,使得 a=b*b。
给定一个正整数 n,请找到最小的正整数 x,使得它们的乘积是一个完全平方数。
输入
输入一行包含一个正整数 n。
输出
输出找到的最小的正整数 x。
样例
输入样例:
12
输出样例:
3
代码
#include<iostream>
using namespace std;
typedef long long LL;
LL n;
int main(){
scanf("%lld",&n);
LL res = 1;
for(LL i=2;i*i<=n;i++){
if(n%i==0){
int s = 0;
while(n%i==0){
s++;
n/=i;
}
if(s%2) res*=i;
}
}
if(n>1) res *= n;
printf("%lld",res);
}