[欧拉函数] uva 11426 GCD - Extreme (II)
来源:互联网 发布:淘宝店铺索引在哪里 编辑:程序博客网 时间:2024/06/05 17:56
题意:
求1~n之间两两gcd的和,gcd(a,b)和gcd(b,a)算一个。
思路:
设gcd(x,n)=i的x的个数为g(n,i),则g(n,i)=phi(n/i)。phi(x)为x的欧拉函数值。
注:这里x<n。
所以采用打表的方法
ans[i]=ans[i-1]+g[i]
g[i]为1~i之间的数与i的gcd之和。
而求g[i]的方法就需要用筛选法了
代码:
#include"cstdio"#include"cstring"#include"cmath"#include"cstdlib"#include"algorithm"#include"iostream"#include"map"#include"queue"#define ll long longusing namespace std;#define MAX 4000007int phi[MAX];int g[MAX+10];ll ans[MAX+10];void Eorue(){ phi[1]=1; int i,j ; for(i=2; i<MAX; i++) { if(!phi[i]) { for(j=i; j<MAX; j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } }}int main(){ Eorue(); for(int i=1; i<MAX; i++) { for(int j=i+i; j<MAX; j+=i) g[j]+=i*phi[j/i]; } ans[2]=g[2]; for(int i=3;i<MAX;i++) ans[i]=ans[i-1]+g[i]; int n; while(scanf("%d",&n),n) { printf("%lld\n",ans[n]); } return 0;}
0 0
- uva 11426 - GCD - Extreme (II) 欧拉函数
- UVa 11426 GCD - Extreme (II) / 素数筛选 + 欧拉函数
- UVa 11426 - GCD - Extreme (II) (数学 欧拉函数)
- [欧拉函数] uva 11426 GCD - Extreme (II)
- 【欧拉函数】uva 11426 GCD - Extreme (II)
- UVA 11426 GCD Extreme (II) 欧拉函数
- UVA 11426 GCD - Extreme (II) (数论|欧拉函数)
- uva 11426 - GCD - Extreme (II) 欧拉函数
- Uva 11426 - GCD - Extreme (II) 欧拉函数
- UVA 11426 GCD - Extreme (II) (欧拉函数)
- UVA 11426 GCD - Extreme (II)(欧拉函数)
- UVA 11426 GCD - Extreme (II)(欧拉函数)
- 【欧拉】 UVA 11426 GCD - Extreme (II)
- 欧拉 uva 11426 - GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)(神TM GCD大法,欧拉函数)
- UVa 11426 GCD - Extreme (II) (欧拉函数应用·O(N*logN))
- GCD - Extreme (II) [欧拉函数]
- uva 11424 && 11426 GCD - Extreme(数论:欧拉函数)
- BZOJ1007【HNOI2008】水平可见直线
- 题目 1026 又一版 A+B 九度Online Judge
- 32位、64位、以及如何得知自己的电脑是否支持64位的系统
- 线程和 进程间的通信问题
- [机房重构]UML图(包图、类图、用例图、时序图)
- [欧拉函数] uva 11426 GCD - Extreme (II)
- QT学习 之 布局(一) QGridLayout
- Don't learn to code, learn to think
- Collection-集合类,泛型基础概念
- 电脑使用技巧
- 绘制一个坦克在控制台
- 查询网站服务器用什么内核
- servlet中图片验证码创建
- 【SICP练习】115 练习3.41