看破欧拉函数的奥秘
2017-03-11 22:56
239 查看
注意以下三个特殊性质
编程实现
利用欧拉函数和它本身不同质因数的关系,用筛法计算出某个范围内所有数的欧拉函数值。
//直接求解欧拉函数 #include<cstdio> int euler(int n){ //返回euler(n) int res=n,a=n; for(int i=2;i*i<=a;i++){//从小到大尝试n的质因数 if(a%i==0){//如果i是n的质因数 res=res/i*(i-1);//提了一个1/i出来,先进行除法是为了防止中间数据的溢出 while(a%i==0) a/=i;//欧拉函数只记算一种质因数 } } if(a>1) res=res/a*(a-1);//如果最后还剩因子 return res; } int main(){ int x; scanf("%d",&x); printf("%d",euler(x)); return 0; }
//筛选法打欧拉函数表 #include<cstdio> #define Max 1000001 int euler[Max]; void Init(){ euler[1]=1; for(int i=2;i<Max;i++) euler[i]=i; for(int i=2;i<Max;i++) if(euler[i]==i)//如果i是质数 for(int j=i;j<Max;j+=i) euler[j]=euler[j]/i*(i-1);//提一个1/i,先进行除法是为了防止中间数据的溢出 return ; } int main() { Init(); for(int i=1;i<=100;i++) printf("%d\n",euler[i]); return 0; }
相关文章推荐
- 我已看破【词汇的奥秘】
- 欧拉函数
- hdu1695(欧拉函数,容斥原理,vector容器)
- 欧拉函数扩展公式(10哈工大多校)(3501)
- 欧拉函数
- HDU 5667 Sequence【矩阵快速幂】【欧拉函数】
- 深入理解JVM(二)——揭开HotSpot对象创建的奥秘
- FZU 1759 Super A^B mod C (欧拉函数,快速幂,降幂公式)
- 欧拉函数
- 求一个数的质因子以及欧拉函数
- 欧拉函数的证明
- hihoCoder 数论五·欧拉函数
- lightoj 1007 - Mathematically Hard 欧拉函数
- ACM:数论专题(5)——欧拉函数
- 欧拉函数---数论
- ACM: 扩展欧几里德+欧拉函数 数论…
- hdu 1395(欧拉函数)
- UVA 11428 GCD - Extreme (II)(G=∑ ∑GCD(i, j)(1<=i<N,i+1<=j<=N,欧拉函数)
- 函数重载机制的奥秘
- UVA 10299 Relatives(欧拉函数)