Shirlies
宁静专注认真的程序媛~
代码如下:
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 
 5 const int maxn = 3000000+100;
 6 int phi[maxn];
 7 int a,b;
 8 
 9 void phi_table(int n)
10 {
11     memset(phi,0,sizeof(phi));
12     phi[1] = 1;
13     for(int i = 2;i <= n;i ++)
14     {
15         if(!phi[i])
16         {
17             for(int j = i;j <= n;j += i)
18             {
19                 if(!phi[j])
20                     phi[j] = j;
21                 phi[j] = phi[j] / i * (i - 1);
22             }
23         }
24     }
25 }
26 
27 int main()
28 {
29     while(scanf("%d%d",&a,&b) == 2)
30     {
31         phi_table(b);
32 
33         __int64 ans = 0;
34         for(int i = a;i <= b;i ++)
35         {
36             ans += (__int64)phi[i];
37         }
38 
39         printf("%I64d\n",ans);
40     }
41 
42     return 0;
43 }

 

posted on 2012-05-23 18:00  Shirlies  阅读(165)  评论(0编辑  收藏  举报