数学(欧拉函数):UVAOJ 11426 GCD - Extreme (II)
额,由于我并不知道如何显示PDF文件,于是就只好截图了。
这是一道数论题,我觉得还是挺有意思的。
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cmath> 5 #include <cstdio> 6 using namespace std; 7 const int MAXN=4000000; 8 long long f[MAXN+10],ans[MAXN+10],PHI[MAXN+10]; 9 10 void Phitable() 11 { 12 PHI[1]=1; 13 for(int i=2;i<=4000000;i++) 14 if(!PHI[i]) 15 for(int j=i;j<=4000000;j+=i){ 16 if(!PHI[j])PHI[j]=j; 17 PHI[j]=PHI[j]/i*(i-1); 18 } 19 } 20 21 int main() 22 { 23 Phitable(); 24 for(int i=1;i<=4000000;i++) 25 for(int j=i*2;j<=4000000;j+=i) 26 f[j]+=i*PHI[j/i]; 27 for(int i=2;i<=4000000;i++) 28 ans[i]=ans[i-1]+f[i]; 29 int n; 30 while(~scanf("%d",&n)&&n){ 31 printf("%lld\n",ans[n]); 32 } 33 return 0; 34 }
尽最大的努力,做最好的自己!