題目
原題鏈接:B. Duff in Love
題意
找到n的最大的因子缰犁,且不滿足它對i*i取余==0。
參考了其他作者的思路和代碼。所有質(zhì)因數(shù)之積即為解成黄。需要對找因數(shù)進(jìn)行優(yōu)化玻墅。
代碼
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n,s[10000],t=1,ans=1;
scanf("%I64d",&n);
for(int i=2;i<=n;i++){
while(n%i==0){
if(s[t-1]!=i) s[t++]=i;
n/=i;
}
if(i>sqrt(n)){s[t++]=n;break;}
}
for(int i=1;i<t;i++){
ans=ans*s[i];
}
printf("%I64d\n",ans);
return 0;
}