首页 > 代码库 > lightoj1007Mathematically Hard
lightoj1007Mathematically Hard
欧拉函数。
结果一定用unsigned long long。
1 //Accepted 40148 KB 712 ms 2 #include <cstdio> 3 #include <cstring> 4 const int MAXN = 5000005; 5 unsigned long long phi[MAXN]; 6 void getphi() 7 { 8 phi[1]=0; 9 for (int i=2;i<MAXN;i++) 10 { 11 if (!phi[i]) 12 { 13 for (int j=i;j<MAXN;j+=i) 14 { 15 if (!phi[j]) 16 { 17 phi[j]=j; 18 } 19 phi[j]=phi[j]/i*(i-1); 20 } 21 } 22 } 23 for (int i=2;i<MAXN;i++) 24 phi[i]=phi[i-1]+phi[i]*phi[i]; 25 } 26 int main() 27 { 28 getphi(); 29 int T; 30 scanf("%d",&T); 31 int a,b; 32 for (int t=1;t<=T;t++) 33 { 34 scanf("%d%d",&a,&b); 35 if (a>b) 36 { 37 t=a; 38 a=b; 39 b=t; 40 } 41 printf("Case %d: %llu\n",t,phi[b]-phi[a-1]); 42 } 43 return 0; 44 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。