[模板]筛选法求欧拉函数
来源:互联网 发布:mac磁盘权限修复 编辑:程序博客网 时间:2024/05/01 07:00
欧拉函数
对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。
Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。
欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。
那么如何变成实现欧拉函数呢?下面通过两种不同的方法来实现。
至于应用的方面,我对这方面接触不多,所以好好看看下面的题目吧。
*欧拉函数:
数论里很多地方都能用到欧拉函数,很重要的。 pku1284 Primitive Roots (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1284 pku2407 Relatives (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2407 pku2773 Happy 2006
http://162.105.81.212/JudgeOnline/problem?id=2773 pku2478 Farey Sequence (快速求欧拉函数)
http://162.105.81.212/JudgeOnline/problem?id=2478 pku3090 Visible Lattice Points (法雷级数)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3090 *推荐:(欧拉函数,费马小定理)
pku3358 Period of an Infinite Binary Expansion http://acm.pku.edu.cn/JudgeOnline/problem?id=3358
int euler[MAXN+1];void getEuler(){ memset(euler,0,sizeof(euler)); euler[1] = 1; for(int i = 2;i<MAXN;i++) if (!euler[i]) for(int j = i; j <MAXN;j += i) { if (!euler[j]) euler[j] = j; euler[j] = euler[j]/i*(i-1); }}long long eular(long long n){ long long ans = n; for(int i = 2;i*i<=n;i++) { if (n% i ==0) { ans = ans - ans/i; while(n % i ==0 ) n /= i; } } if (n>1) ans -=ans/n; return ans;}
0 0
- [模板]筛选法求欧拉函数
- hdu2824 The Euler function 筛选法求欧拉函数模板题
- 欧拉函数 素数筛选法模板
- 欧拉函数模板(判断,筛选)
- 筛选法求欧拉函数phi
- 筛选法求欧拉函数
- 筛选函数
- 线性筛选素数模板
- 【模板】素数筛选
- 素数筛选法 模板
- 素数筛选(模板)
- 素数筛选【模板】
- 素数筛选法 模板
- [模板]素数筛选
- 筛选素数模板
- 素数筛选法模板
- 【模板】素数筛选
- 筛选素数[模板]
- poj 2786 Keep the Customer Satisfied(贪心+优先队列)
- 优盘启动盘进入系统后识别不了硬盘
- java中对数组的操作
- php模版引擎(smarty3)—优化(定界符,避免和其他语言的冲突)
- ubuntu搭建OpenGrok
- [模板]筛选法求欧拉函数
- 二值图像边缘提取算法C语言实现
- HDN通畅工程
- android AVD 启动时报错(emulator: erroremulator:ERROR:This AVD's configuration is missing a kernel file )
- 全志a33下生成设备节点/dev/spi0.0的步骤(全志a20下生成/dev/spidev2.0)
- 自定义 view oncreate -> onmesure -> onlayout ->在 成员方法findviewbyid 为 null , 在 onmesure则友值
- STL中的排序算法一览
- AVL树的旋转
- 【Java GUI】框架窗口基础