乘积=一个整数的平方,就相当于乘积开根号等于一个整数,如果一个数开根号等于整数,那么这个数(任意一个数都可以分成若干个质因子的乘积)每个质因数出现的次数都必须为偶数,那么这道题就是一个求解质因数的问题分解质因数。
把出现次数为奇数的质因数乘一遍就是最小的x。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,x=1;
cin>>n;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
ll s=0;
while(n%i==0){
s++;
n=n/i;
}
if(s%2!=0){
x=x*i;
}
}
}
if(n>1){
x=x*n;
}
cout<<x;
return 0;
}