算法训练——素因子去重
//素因子去重 #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; }