之前我们自学欧拉函数的时候,一直都是一脸懵逼的,可能是我智力的问题吧(我就是一个小小的蒟蒻),后来问了一些大佬,然后又不停的查百度才懂的。。。。(有问题,问度娘)
言归正传,现在开始讲欧拉函数:
序:欧拉函数实际上就是求一个数与他互质的数的个数(肯定要小于他自己啦!),我们表示为
φ
(
n
)
\varphi (n)
φ(n)
1.欧拉函数的通用公式就是: φ ( n ) = n ∗ ( 1 − 1 p 1 ) ∗ ( 1 − 1 p 2 ) ∗ . . . ∗ ( 1 − 1 p n ) \varphi (n)=n*(1-\frac{1}{p1})*(1-\frac{1}{p2})*...*(1-\frac{1}{pn}) φ(n)=n∗(1−p11)∗(1−p21)∗...∗(1−pn1)【pi为质数】
这个其实是可以理解的,我们已经知道:素数n的phi实际上就是n-1,为什么呢?因为除了他自己,其他比他小的数都与他互质嘛,其实这也是一个质数特性。然而 1 − 1 p i 1-\frac{1}{pi} 1−pi1其实就相当于分率,因为我们已知pi就是质数了,而质数的一大堆特性我们都可以搬过来用,pi只有他自己不与他互质,而剩下的就都与他互质啦!所以就是1-1/pi嘛,然后我们将所有的分率乘起来,最后再乘一个n,那么就是 φ ( n ) \varphi(n) φ(n)啦!
介个也可以证明:我们令n=p*q,那么
φ
(
n
)
=
n
−
n
q
−
n
p
+
n
q
+
p
\varphi (n)=n-\frac{n}{q}-\frac{n}{p}+\frac{n}{q+p}
φ(n)=n−qn−pn+q+pn
然后你再化简,就会得到
φ
(
n
)
=
n
∗
(
1
−
1
p
1
)
∗
(
1
−
1
p
2
)
∗
.
.
.
∗
(
1
−
1
p
n
)
\varphi (n)=n*(1-\frac{1}{p1})*(1-\frac{1}{p2})*...*(1-\frac{1}{pn})
φ(n)=n∗(1−p11)∗(1−p21)∗...∗(1−pn1)
2. φ ( n ) = n − 1 \varphi(n)=n-1 φ(n)=n−1【n为质数】
这个也是很好理解的,我上面已经讲了。
3.接着,我们设
n
=
p
k
n={p}^k
n=pk,也就是说n能分成若干个相同的数相乘,那么我们就开始来研究phi(n)吧!
首先
φ
(
n
)
=
φ
(
p
k
)
=
n
−
n
p
\varphi(n)=\varphi(p^k)=n-\frac{n}{p}
φ(n)=φ(pk)=n−pn(因为n除了p的倍数,剩下的数都与他互质嘛,例如
8
=
2
3
8=2^3
8=23,8除了2,4,6,8【我们这里暂且包括8,因为后面我们是用8来减得】,剩下的数都与他互质了呀!而p的倍数的个数就是
n
q
\frac{n}{q}
qn呀)=
p
k
−
p
k
p
=
p
k
−
p
(
k
−
1
)
p^k- \frac{p^k}{p}=p^k-p^{(k-1)}
pk−ppk=pk−p(k−1)
这里,我们两个式子都提取出
p
(
k
−
1
)
p^{(k-1)}
p(k−1),然后就成为
p
(
k
−
1
)
∗
p
−
p
(
k
−
1
)
∗
1
p^{(k-1)}*p-p^{(k-1)}*1
p(k−1)∗p−p(k−1)∗1,太好了,可以乘法分配律,就是
p
(
k
−
1
)
∗
(
p
−
1
)
p^{(k-1)}*(p-1)
p(k−1)∗(p−1)
这个式子很重要,后面的证明都需要!
4.啊哈,如果你看到这里并且很理解前面的公式的话,那么就恭喜你,你离成功已经很近了!
这里我们设a和b互质,事实证明
φ ( a ∗ b ) = φ ( a ) ∗ φ ( b ) \varphi(a*b)=\varphi(a)*\varphi(b) φ(a∗b)=φ(a)∗φ(b)
为什么捏?我们令
n
=
p
1
a
1
∗
p
2
a
2
∗
.
.
.
.
∗
p
n
a
n
n=p1^{a1}*p2^{a2}*....*pn^{an}
n=p1a1∗p2a2∗....∗pnan【并且pi为质数】
∵
φ
(
n
)
=
n
∗
(
1
−
1
p
1
)
∗
(
1
−
1
p
2
)
∗
.
.
.
.
.
.
∗
(
1
−
1
p
n
)
\varphi(n)=n*(1-\frac{1}{p1})*(1-\frac{1}{p2})*......*(1-\frac{1}{pn})
φ(n)=n∗(1−p11)∗(1−p21)∗......∗(1−pn1)【pi为质数】
∴原式=
(
p
1
a
1
∗
p
2
a
2
∗
.
.
.
.
∗
p
n
a
n
)
∗
(
1
−
1
p
1
)
∗
(
1
−
1
p
2
)
∗
.
.
.
.
.
.
∗
(
1
−
1
p
n
)
(p1^{a1}*p2^{a2}*....*pn^{an})*(1-\frac{1}{p1})*(1-\frac{1}{p2})*......*(1-\frac{1}{pn})
(p1a1∗p2a2∗....∗pnan)∗(1−p11)∗(1−p21)∗......∗(1−pn1)
=
(
p
1
a
1
∗
p
2
a
2
∗
.
.
.
.
∗
p
n
a
n
)
∗
(
p
1
−
1
)
∗
(
p
2
−
1
)
∗
.
.
.
.
.
.
∗
(
p
n
−
1
)
/
(
p
1
∗
p
2
∗
.
.
.
.
.
∗
p
n
)
(p1^{a1}*p2^{a2}*....*pn^{an})*(p1-1)*(p2-1)*......*(pn-1)/(p1*p2*.....*pn)
(p1a1∗p2a2∗....∗pnan)∗(p1−1)∗(p2−1)∗......∗(pn−1)/(p1∗p2∗.....∗pn)
=
[
(
p
1
−
1
)
∗
p
1
(
a
1
−
1
)
]
∗
[
(
p
2
−
1
)
∗
p
2
(
a
2
−
1
)
]
∗
.
.
.
.
.
∗
[
(
p
n
−
1
)
∗
p
n
(
a
n
−
1
)
]
[(p1-1)*p1^{(a1-1)}]*[(p2-1)*p2^{(a2-1)}]*.....*[(pn-1)*pn^{(an-1)}]
[(p1−1)∗p1(a1−1)]∗[(p2−1)∗p2(a2−1)]∗.....∗[(pn−1)∗pn(an−1)]
=
φ
(
p
1
a
1
)
∗
φ
(
p
2
a
2
)
∗
.
.
.
.
∗
φ
(
p
n
a
n
)
\varphi(p1^{a1})*\varphi(p2^{a2})*....*\varphi(pn^{an})
φ(p1a1)∗φ(p2a2)∗....∗φ(pnan)【根据上面3的公式】
这样我们就发现
φ
(
p
1
a
1
)
∗
φ
(
p
2
a
2
)
∗
.
.
.
.
∗
φ
(
p
n
a
n
)
=
φ
(
p
1
a
1
∗
p
2
a
2
∗
.
.
.
.
∗
p
n
a
n
)
\varphi(p1^{a1})*\varphi(p2^{a2})*....*\varphi(pn^{an})=\varphi(p1^{a1}*p2^{a2}*....*pn^{an})
φ(p1a1)∗φ(p2a2)∗....∗φ(pnan)=φ(p1a1∗p2a2∗....∗pnan)
啊,太有趣了,那么也就是说:当几个数中相互互质的话,那么phi就是积性函数,所以就是上面的
φ
(
a
∗
b
)
=
φ
(
a
)
∗
φ
(
b
)
\varphi(a*b)=\varphi(a)*\varphi(b)
φ(a∗b)=φ(a)∗φ(b)【abs(a,b)=1】
5.最后一个公式了,恭喜你啊,你就要成功了!
当a mod b=0时,
φ
(
a
∗
b
)
=
φ
(
a
)
∗
b
\varphi(a*b)=\varphi(a)*b
φ(a∗b)=φ(a)∗b
这个很简单就可以证明:由上面所说,b并到其中一个
b
x
b^x
bx里面,那么
φ
(
a
)
=
φ
(
b
x
)
=
(
b
−
1
)
∗
b
(
x
−
1
)
\varphi(a)=\varphi(b^x)=(b-1)*b^{(x-1)}
φ(a)=φ(bx)=(b−1)∗b(x−1)
然后
φ
(
a
∗
b
)
=
φ
(
b
x
∗
b
)
=
φ
(
b
(
x
+
1
)
)
=
(
b
−
1
)
∗
b
x
\varphi(a*b)=\varphi(b^x*b)=\varphi(b^{(x+1)})=(b-1)*b^x
φ(a∗b)=φ(bx∗b)=φ(b(x+1))=(b−1)∗bx
(
b
−
1
)
∗
b
(
x
−
1
)
∗
b
=
(
b
−
1
)
∗
b
x
(b-1)*b^{(x-1)}*b=(b-1)*b^x
(b−1)∗b(x−1)∗b=(b−1)∗bx
∴
φ
(
a
)
∗
b
=
φ
(
a
∗
b
)
\varphi(a)*b=\varphi(a*b)
φ(a)∗b=φ(a∗b)
奶思,成功啦,代码就是在线性素数上改一下: