zoukankan      html  css  js  c++  java
  • 欧拉函数

    之前我们自学欧拉函数的时候,一直都是一脸懵逼的,可能是我智力的问题吧(我就是一个小小的蒟蒻),后来问了一些大佬,然后又不停的查百度才懂的。。。。(有问题,问度娘)

    言归正传,现在开始讲欧拉函数:

    序:欧拉函数实际上就是求一个数与他互质的数的个数(肯定要小于他自己啦!),我们表示为(varphi (n))

    1.欧拉函数的通用公式就是:(varphi (n)=n*(1-frac{1}{p1})*(1-frac{1}{p2})*...*(1-frac{1}{pn}))【pi为质数】

    这个其实是可以理解的,我们已经知道:素数n的phi实际上就是n-1,为什么呢?因为除了他自己,其他比他小的数都与他互质嘛,其实这也是一个质数特性。然而1-1/pi其实就相当于分率,因为我们已知pi就是质数了,而质数的一大堆特性我们都可以搬过来用,pi只有他自己不与他互质,而剩下的就都与他互质啦!所以就是1-1/pi嘛,然后我们将所有的分率乘起来,最后再乘一个n,那么就是phi(n)啦!

    当然介个也可以证明:我们令n=p*q,那么(varphi (n)=n-frac{n}{q}-frac{n}{p}+frac{n}{q+p})
    然后你再化简,就会得到(varphi (n)=n*(1-frac{1}{p1})*(1-frac{1}{p2})*...*(1-frac{1}{pn}))

    2.(varphi(n)=n-1)【n为质数】

    这个也是很好理解的,我上面已经讲了。

    3.接着,我们设(n={p}^k),也就是说n能分成若干个相同的数相乘,那么我们就开始来研究(varphi(n))吧!
    首先(varphi(n)=varphi(p^k)=n-frac{n}{p})(因为n除了p的倍数,剩下的数都与他互质嘛,例如(8=2^3),8除了2,4,6,8【我们这里暂且包括8,因为后面我们是用8来减得】,剩下的数都与他互质了呀!而p的倍数的个数就是(frac{n}{q})呀)=(p^k- frac{p^k}{p}=p^k-p^{(k-1)})

    这里,我们两个式子都提取出(p^{(k-1)}),然后就成为(p^{(k-1)}*p-p^{(k-1)}*1),太好了,可以乘法分配律,就是(p^{(k-1)}*(p-1))
    这个式子很重要,后面的证明都需要!

    4.啊哈,如果你看到这里并且很理解前面的公式的话,那么就恭喜你,你离成功已经很近了!

    这里我们设a和b互质,事实证明(varphi(a*b)=varphi(a)*varphi(b))

    为什么捏?我们令(n=p1^{a1}*p2^{a2}*....*pn^{an})【并且pi为质数】

    (varphi(n)=n*(1-frac{1}{p1})*(1-frac{1}{p2})*......*(1-frac{1}{pn}))【pi为质数】

    ∴原式=((p1^{a1}*p2^{a2}*....*pn^{an})*(1-frac{1}{p1})*(1-frac{1}{p2})*......*(1-frac{1}{pn}))

    =((p1^{a1}*p2^{a2}*....*pn^{an})*(p1-1)*(p2-1)*......*(pn-1)/(p1*p2*.....*pn))

    =([(p1-1)*p1^{(a1-1)}]*[(p2-1)*p2^{(a2-1)}]*.....*[(pn-1)*pn^{(an-1)}])

    =(varphi(p1^{a1})*varphi(p2^{a2})*....*varphi(pn^{an}))【根据上面3的公式】

    这样我们就发现(varphi(p1^{a1})*varphi(p2^{a2})*....*varphi(pn^{an})=varphi(p1^{a1}*p2^{a2}*....*pn^{an}))

    啊,太有趣了,那么也就是说:当几个数中相互互质的话,那么phi就是积性函数,所以就是上面的(varphi(a*b)=varphi(a)*varphi(b))【abs(a,b)=1】

    5.最后一个公式了,恭喜你啊,你就要成功了!

    当a mod b=0时,(varphi(a*b)=varphi(a)*b)

    这个很简单,可以证明:由上面所说,b并到其中一个(b^x)里面,那么(varphi(a)=varphi(b^x)=(b-1)*b^{(x-1)})

    然后(varphi(a*b)=varphi(b^x*b)=varphi(b^{(x+1)})=(b-1)*b^x)
    ((b-1)*b^{(x-1)}*b=(b-1)*b^x)
    (varphi(a)*b=varphi(a*b))

    奶思,成功啦,代码就是在线性素数上改一下:

    当n为素数时,(varphi(n)=n-1)

    当a和b互质时,(varphi(a*b)=varphi(a)*varphi(b))

    当a mod b=0时,(varphi(a*b)=varphi(a)*b)

    你好,这里天殇

  • 相关阅读:
    7.Pod控制器—Job&CronJob
    6.Pod控制器—DaemonSet
    5.Pod控制器—ReplicaSet&Deployment
    0.4kubeadm参数说明
    14.Open vSwitch实现跨主机的容器之间网络互联
    p1144_最短路计数问题
    vue在dom绑定点击事件后,同时将值和事件传递
    vue中使用lodash的throttle不生效解决方案
    vuecli3项目添加pwa支持
    flutter for web跨域解决方案
  • 原文地址:https://www.cnblogs.com/candy067/p/11401966.html
Copyright © 2011-2022 走看看