思路:质因子累乘的值即为所求
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
typedef long long LL;
int prime(LL n);
int main()
{
LL n,ans,m;
while(~scanf("%lld",&n))
{
/*for(int i=2;i<n;i++)
{
if(n%i==0)
printf("%d ",i);
}*/
ans=1;
if(prime(n)|| n==1)
ans=n;
else
{
int len=sqrt(n);
for(int i=2; i<=len; i++)
{
m=n/i;
if(n%i==0 && prime(i))
ans*=i;
if(m!=i && m*i==n && prime(m))
ans*=m;
}
}
printf("%lld
",ans);
}
return 0;
}
int prime(LL n)
{
if(n==1)
return 0;
for(int i=2; i<=sqrt(n); i++)
{
if(n%i == 0)
return 0;
}
return 1;
}