码迷,mamicode.com
首页 > 其他好文 > 详细

GCD - Extreme (II)(UVA11426)

时间:2016-08-23 01:26:33      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

思路:欧拉函数;

欧拉函数,然后用下等差数列公式就行了。

 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<queue>
 5 #include<math.h>
 6 #include<vector>
 7 #include<bitset>
 8 using namespace std;
 9 typedef long long LL;
10 bool prime[5000000];
11 int ans[1000000];
12 int oula[5000000];
13 int main(void)
14 {
15     int i,j;
16     for(i = 0; i < 5000000; i++)
17     {
18         oula[i] = i;
19     }
20     for(i = 2; i <10000 ; i++)
21     {
22         if(!prime[i])
23         {
24             for(j = i; (i*j) <= 5000000; j++)
25                 prime[i*j] = true;
26         }
27     }
28     int cn = 0;
29     for(i = 2 ; i <= 5000000; i++)
30         if(!prime[i])
31             ans[cn++]=i;
32     oula[0] = 0;
33     oula[1] = 1;
34     for(i = 0; i < cn; i++)
35     {
36         for(j = 1; (ans[i]*j) <= 5000000; j++)
37         {
38             oula[ans[i]*j]/=ans[i];
39             oula[ans[i]*j]*=ans[i]-1;
40         }
41     }
42     int n;
43     while(scanf("%d",&n),n!=0)
44     {   LL sum=0;
45         for(i = 2;i <=n ;i++)
46         { LL ak = (LL)(1+n/i)*(LL)(n/i)/2;
47           sum+=ak*oula[i];
48         }
49         printf("%lld\n",sum);
50     }return 0;
51 }

 

GCD - Extreme (II)(UVA11426)

标签:

原文地址:http://www.cnblogs.com/zzuli2sjy/p/5797705.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!