#include<stdio.h>
using namespace std;
bool prime(long long i){
for(long long k=2;k*k<=i;k++){
if(i%k==0)
return false;
}
return true;
}
int main(){
long long n;
scanf("%I64d",&n);
long long sum =1;
for(long long i=2;i<=n;i++){
if(n%i==0&&prime(i)){
sum*=i;
while(n%i==0){
n=n/i;
}
}
}
printf("%I64d",sum);
return 0;
}
优化处!
优化1:先进行 n%i==0 判断 短路的话,时间会节省
优化2:每次找到一个因子后将数除掉,再进行循环,减少循环次数