#include<bits/stdc++.h>
#define int long long
using namespace std;
int k,n,l=1;
int check(int x)
{
int f=1;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
f=0;
break;
}
}
return f;
}
signed main()
{
cin>>k;
if(check(k))
{
cout<<k;
return 0;
}
for(int i=2;i<=sqrt(k);i++)
{
if(k%i==0)
{
l=i;
break;
}
}
for(int i=l;;i++)
{
if(__gcd(k,i)!=1)
{
k/=(__gcd(k,i));
if(check(k))
{
cout<<max(k,i);
break;
}
}
if(__gcd(k,l)==1)
{
for(int j=2;j<=sqrt(k);j++)
{
if(k%j==0)
{
l=j;
break;
}
}
i=l-1;
}
}
return 0;
}
大体思路就是从小往大一个一个找k的质因数,除干净了就找下一个