zoukankan      html  css  js  c++  java
  • 欧拉函数及费马小定理

    2016.1.26

     

    欧拉函数:

    对于m=p1e1 . p2e2 . p3e3 . …… . pnen  (唯一分解)  

    欧拉函数定义为φ(m)=m * ∏(pi – 1)/pi

    其意义为不超过m并且和m互素的数的个数

    特别的φ(1)=1

    证明:

            首先不知道容斥原理的先了解一下

            于是可以得到φ(m)=n-n/p1-n/p2-...-n/pn+n/(p1p2)+n/(p1p3)+...+n/(pk-1pk)-...........

            然后再来看公式φ(m)=m * ∏(1– 1/pi)

             把右边展开【众人:你逗我

             当然不是真的展开,事实上我们展开的每一项无非是从每个括号中选一个,不是1就是-1/pi ,然后乘起来得到的。

             这时的你是否有一丝激动!

             这不就是和容斥原理一毛一样!

             然后就得证了!

     

    欧拉定理:

    对于和m互素的x,有xφ(m)≡1(mod m)

    证明:

    设所有n以下和n互质的数依次为X1,X2,…,Xφ(n)

    设k为一个与n互质的数,那么设A={kX1, kX2,…, kXφ(n)}

    【那么A中没有两个数模n同余】

    证明:假设ak≡bk(mod n)

          那么有ak-bk=nq,即(a-b)k=qn,所以左式模n为0

          然而k与n互质,1<(a-b)<n,所以(a-b)也模n不等于0

          那么显然上式不成立

          证毕

    【A中所有数的余数都与n互质】

    证明:假设gcd(kXi mod n, n)=r

          那么kXi=qn+pr

          那么kXi也有因子r,那么kXi与n不互质,显然不可能

          证毕

     

    那么由以上两个结论可知A中的数模n的余数应该与X1,X2,…,Xφ(n) 唯一对应。

    即X1*X2*…*Xφ(n) ≡ kX1*kX2*…*kXφ(n) (mod n)

    也就是说0 ≡ (kφ(n)-1)*X1*X2*…*Xφ(n) (mod n)

    显然X1*X2*…*Xφ(n)是与n互质的,所以kφ(n)-1≡0(mod n)

    kφ(n)≡1(mod n)

    得证

     

    费马小定理:

     

    特别的,当p为素数时,x无法被p整除,φ(p)=p-1,于是便有费马小定理Xp-1≡1(mod p)

    在p是素数时,对任意正整数x都有Xp≡X(mod p)

     

    于是对于a的逆元x,有ax≡1(mod m),对于a,m互素且m为素数时,有x=am-2,于是我们可以通过快速幂快速求出a的逆元。

    另外,借助素数筛,我们还可以很快的求出1-n的欧拉函数值。每当我们找到一个素数,就把他的倍数的欧拉函数值乘上(p-1)/p.

    而且,借助费马小定理我们可以实现对除法取模

  • 相关阅读:
    Python_命名空间和作用域_25
    Python_函数_复习_习题_24
    Python_每日习题_0001_数字组合
    Python_试题_23
    Python_初识函数和返回值_22
    linux-shell-引用-命令替换-命令退出状态-逻辑操作符
    linux-shell-变量参数
    Python-复习-文件操作-21
    Python-注册登陆-20
    linux-vim
  • 原文地址:https://www.cnblogs.com/16er/p/5159396.html
Copyright © 2011-2022 走看看