【算法】欧拉函数——小于n的数中与n互质数的数目
来源:互联网 发布:数据库营销例子 编辑:程序博客网 时间:2024/05/21 19:47
欧拉函数
简介
在数论,对正整数n,欧拉函数是小于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名(Ruler’so totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。
性质
若n是质数p的k次幂
(因为除了p的倍数外,其他数都跟n互质)
若n为质数则
这些定理是筛法求欧拉函数的基础
算法写法
直接求解
int euler(int n){ //返回euler(n) int res=n,a=n; for(int i=2;i*i<=a;i++){ if(a%i==0){ res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出 while(a%i==0) a/=i; } } if(a>1) res=res/a*(a-1); return res; }
筛法
long long a[1000020]; memset(a,0,sizeof(a)); a[1]=1; for(int i=2; i<1000020; i++) if(!a[i]) for(int j=i; j<1000020; j+=i) { if(!a[j]) a[j]=j; a[j]=a[j]/i*(i-1); }
参考资料:
欧拉函数_百度百科
欧拉函数线性筛法
欧拉函数_Lur ‘s acm blog
0 0
- 【算法】欧拉函数——小于n的数中与n互质数的数目
- 【欧拉函数】(小于或等于n的数中与n互质的数的数目)
- HDU5430欧拉函数求小于等于n的数中与n互质的数的数目
- HDU 2824 欧拉函数 求小于等于n且与n互质数的个数
- hdoj 3501 【欧拉函数 求小于或者等于n的数中 与n互质的数总和】
- 【质数算法】——判断质数、求小于N的质数、求前N个质数
- 欧拉函数--(求小于n的整数中与n互质的个数)
- 欧拉定理——小于N的互质数的个数
- 欧拉函数,求小于等于n 的数里与 n 互质的数的个数
- hdu 3501 欧拉函数(求小于n与n不互质的数之和)
- 欧拉函数求小于n的互质数 Java模板
- 51nod 1136 欧拉函数(少于或等于n的数中与n互质的数的数目,1也算)
- 欧拉函数的延伸:关于求小于等于n且与n互质的数的和。
- 小于N的质数
- 小于n且与n互素的整数个数(欧拉函数)的计算
- [数论]小于n且与n互素的个数(欧拉函数)
- 小于n的数中与n互质的数的和
- 1~n中所有数的欧拉函数值
- [leetcode] 305. Number of Islands II 解题报告
- IOS错误笔记
- HDOJ 1241Oil Deposits(BFS)
- Python图像处理库PIL中快速傅里叶变换FFT的实现(一)
- redis持久化
- 【算法】欧拉函数——小于n的数中与n互质数的数目
- 在Eclipse中将Android项目生成APK并且签名
- spark
- c#单例模式3中写法
- 【PA2014】【BZOJ3716】Muzeum
- 【BZOJ3651】网络通信
- 【CERC2014】【BZOJ4043】Vocabulary
- snprintf类型不匹配导致的core dump问题分析与定位
- 【Android】ListView多选模式的使用