n = int(input())
for i in range(2,10**6):
while(n%i**2 == 0):
n //= i
print(n)
#include <iostream>
#include <bits/stdc++.h>
#define loop(n) for(int i=0;i<n;i++)
#define ci(n) cin>>n
#define endl '\n'
#define ll long long
int freq[1000001]={};
using namespace std ;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n;
cin>>n;
vector<ll>v;
for(int i=1;i<=sqrt(n);i++)
{
if(n%i==0){
v.push_back(i);
if(i!=sqrt(n))v.push_back(n/i);
}
}
sort(v.begin(),v.end(),greater<ll>());
int p =v.size();
for(int i=0;i<p;i++){
bool flag =true;
for(int j=0;j<p;j++){
if(v[i]%v[j]==0){
ll g=sqrt(v[j]);
if(g*g==v[j]&&v[j]!=1)flag=false;
}
}
if(flag){
cout<<v[i];
return 0;
}
}
}
1245C - Constanze's Machine | 1005A - Tanya and Stairways |
1663F - In Every Generation | 1108B - Divisors of Two Integers |
1175A - From Hero to Zero | 1141A - Game 23 |
1401B - Ternary Sequence | 598A - Tricky Sum |
519A - A and B and Chess | 725B - Food on the Plane |
154B - Colliders | 127B - Canvas Frames |
107B - Basketball Team | 245A - System Administrator |
698A - Vacations | 1216B - Shooting |
368B - Sereja and Suffixes | 1665C - Tree Infection |
1665D - GCD Guess | 29A - Spit Problem |
1097B - Petr and a Combination Lock | 92A - Chips |
1665B - Array Cloning Technique | 1665A - GCD vs LCM |
118D - Caesar's Legions | 1598A - Computer Game |
1605A - AM Deviation | 1461A - String Generation |
1585B - Array Eversion | 1661C - Water the Trees |