欧拉函数的递推形式
2013-07-29 14:40
423 查看
在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's
totient function、φ函数、欧拉商数等。
例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。
欧拉函数的值有两个公式:
φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中Pi是质数并且是x的约数。
若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。
totient function、φ函数、欧拉商数等。
例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。
欧拉函数的值有两个公式:
φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中Pi是质数并且是x的约数。
#include <cstdio> #include <iostream> #include <cstring> using namespace std; int main() { int i,j,a[100],n; memset(a,0,sizeof(a)); a[1]=1; for (i=2;i<=100;i++) { if (!a[i]) { for (j=i;j<=100;j+=i) { if (!a[j]) a[j]=j; a[j]=a[j]/i*(i-1); } } } while (~scanf("%d",&n)) { cout<<a <<endl; } }
若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。
#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> using namespace std; long long oula(long long n) { int i; long long ans=1; for (i=2;i*i<=n;i++) { if (n % i==0) { ans*=i-1; n/=i; while (n % i==0) { n/=i; ans*=i; } } } if (n>1) ans*=n-1; return ans; } int main() { long long n; while (~scanf("%lld",&n) && n) { printf("%lld\n",oula(n)); } return 0; }
相关文章推荐
- BZOJ 3884(上帝与集合的正确用法-欧拉函数递推找极限)[Template:数论 V2]
- GCD 扩展GCD 快速GCD 模线性方程 模线性方程组 单独求欧拉函数 递推求欧拉函数
- uva 11426 线性欧拉函数筛选+递推
- 关于欧拉函数的递推方法的证明
- 线性筛及线性递推欧拉函数
- WUST I could run!(素数筛法+欧拉函数的运用+稍微的递推)
- poj2478 Farey Sequence(线性筛法+欧拉函数+递推)
- UVA 11426 欧拉函数 + 递推
- POJ-2478-Farey Sequence-递推求欧拉函数
- 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
- POJ 2478 线性递推欧拉函数
- sicily 1089 欧拉函数递推
- POJ 3090 ZOJ 2777 UVALive 3571 Visible Lattice Points(用递推比用欧拉函数更好)
- POJ 2478 线性递推欧拉函数
- poj 2478 Farey Sequence(递推求欧拉函数)
- poj 2478 Farey Sequence 欧拉函数递推打表
- 线性代数求解递推形式数列的通项公式
- POJ 3090 欧拉函数递推
- 转自mbxc816 欧拉函数递推
- POJ 2478 Farey Sequence(法雷级数+欧拉函数递推)