欧拉函数递推公式证明

欧拉函数phi(n)表示的是1到n当中与n互质的数的个数。

假设n=m*p,(p为n的随机1个质因子)

当m%p=0时,phi(n)=phi(m)*p

当m%p!=0时,phi(n)=phi(m)*(p-1)

          根据质因数分解定理,n至少可以分解出一个素数p,使得n = p*m。

          我们可以将1到n的这个范围划分为一个区间的集合{[m*(i-1),m*i],1<=i<=p},则对于每个区间[m*(i-1)+1,m*i ],其中的每个数可以看成是m*(i-1)+j(1<=j<=m)。

          根据辗转相除法,可以得出gcd(m*(i-1)+j,m)=gcd(m,(m*(i-1)+j)%m)=gcd(m,j)

          从上面的结论,我们可以看出,每个区间对应的某个数对m取模均与0到m-1中的某个数相同,所以1到n当中与m互质的数有p*phi(m)个。

          如果m%p=0,假设m=k*p(k为一个正整数),gcd(b,m)=1,由于p是m的一个因子,如果b和m不存在公共因子的话,那么b和p也肯定不存在公共因子,因此可以得出gcd(b,p)=1,两者组合起来可得:gcd(m*p,b)=gcd(n,b)=1,所以在这种情况下,1到n范围内与m互质的数均与n互质,所以便可得出phi(n) = phi(m)*p;

          如果m%p!=0,我们从gcd(b,m)=1的这个条件当中不能够得到gcd(b,p)=1的这个条件,由于p是素数,p的因子只有两个:1和p,所以gcd(b,p)也就只有两个可能出现的值:1或p,假设存在gcd(b,m)=1,gcd(b,p)=p的这样一种情况,由于m%p!=0,表明m的因子当中不含有p,所以gcd(n,b)=p。在1到n当中,满足gcd(b,m)=1和gcd(b,p)=p这两个条件的数,只能是与m互质并且是p的倍数的数,因此便有phi(m)个数满足这两个条件,所以phi(n)=phi(m)*p-phi(m)=phi(m)*(p-1)。

猜你喜欢

转载自blog.csdn.net/qq_36679229/article/details/87906246