欧拉函数的定义:phi(n)表示在1~n中与n互质的数
难点:
& 与平常的递推唯一不同的是:递推不是由(n-1)推来,这给想出推理过程带来了麻烦
& 如何充分使用互质这个概念,不像其他递推能够容易的列出递推关系
分析:
&对互质的挖掘:
& 两个数的最大公约数(a,b)为 1 ( (a,b)表示a,b的最大公约数)
& 对构成b的所有素因子,a都不能整除它们
由这里可以得到一个很显然的推论:如果构成a,b的素因子集合相同,那么任意的一个数与a,b的关系是: 同时与其互质或者同时不与其互质
& 上面经常出现的字眼“素因子”,是否在提示我们递推式与素因子有关呢?
假设: n=p*m (p 为素数)
提示我们:phi(n),phi(m)是否存在递推式呢?
答案是肯定的:
(1)1~n中与m互质的数目与phi(m)有什么关系呢?
将1~n 可以分成p份: (1,m) , (m+1,2m),……( (p-1)*m,p*m )
为何这样分呢? 你将发现 每份中与m互质的数目是相同的
因为 如果 (b,m)=1,那么(b+t*m,m)=1( b+t*m 无法整除m中任意素因子,模运算的分配率)
(2) 现在考虑一个问题:(b,m)=1,那么(b,n)=1么?
从刚刚的互质出发: 如果构成m的素因子集合包含p,那么构成n,m的素因子集合是相同的,
因此上式成立,否则当b能整除p时,上面显然不成立(存在公有素因子p)。故:
m%p=0时 :phi(n)=phi(m)*p(一共有p份)
m%p!=0时:phi(n)=phi(m)*p-{与m互质但是p的倍数的数}
{与m互质但是p的倍数的数}=phi(m)(p,2*p,3*p,……,m*p中选取,等效1~m求与m互质的数目)
这phi(n)=phi(m)*(p-1)
最终得到递推式:
m%p=0时 :phi(n)=phi(m)*p
m%p!=0时:phi(n)=phi(m)*(p-1)
递推求出通项公式:
phi(n)=∏ pi^(ki-1)*(pi-1) ({pi}为n的所有素因子)