//素因子去重
#include<stdio.h>
int num[4000000] = {0};
int main(){
long long n,ans;
scanf("%d",&n);
if(n==2){
printf("%d",n);
return 0;
}
for(int k=2;k<=n;){ //从最小的质因数开始
if(k==n){
num[k] = 1;
break;
}
else if(n%k == 0){
num[k] = 1;
n = n/k;
}
else
k++;
}
for(int i=2;i<=n;i++){
if(num[i] == 1)
ans *= i;
}
printf("%d",ans);
return 0;
}
原文:https://www.cnblogs.com/Hqx-curiosity/p/12243687.html