素数定理-欧几里得算法-乘法逆元

一、素数定理

          素数定理给出的是估计素数个数的方法:

          设π(x)是小于x的素数的个数,则

          π(x)≈x/lnx

          eg:

               64位二进制表示的素数的个数为

               \frac{2^{64}}{ln2^{64}}- \frac{2^{63}}{ln2^{63}}≈2.05×10^{17}个

二、是否为素数的判定方法

(*)判断素数的必要条件

     (1)欧拉定理

           提及欧拉定理,需要先引出欧拉函数的定义:

           欧拉函数Φ(n)是定义在正整数上的函数,Φ(n)的值等于序列0,1,2,3,…,n-1中与n互素的数的个数

           欧拉函数的性质:

                   (1)m的素数时,有Φ(m)=m-1

                   (2)m=pq,且p和q均是素数时,有Φ(m)=Φ(p)Φ(q)=(p-1)(q-1)

                   (3)若m和n互素,则Φ(m×n)=Φ(m)×Φ(n)

                   (4)若p是一个素数,则Φ(p^e)=p^e-p^(e-1)

                   (5) n=p_{1}^{q_{1}}p_{2}^{q_{2}}...p_{i}^{q_{i}}(p_{1},p_{2},...,p_{i}为素数),则  \varphi(n)=n(1-\frac{1}{p_{1}} )(1-\frac{1}{p_{2}} )...(1-\frac{1}{p_{i}} )

         由欧拉函数可以延伸出欧拉定理的内容:

                    欧拉定理:

                              对于任何互素的两个整数a和n,有

                                         a^{\varphi(n)}\equiv 1(mod n) 

                              如果n=p是素数,则有

                                         a^{p-1}\equiv 1(mod p)

                             显然欧拉定理可以看成是费马定理的推广形式。

                    欧拉定理可以用来简化幂的模运算

                    Eg:

                           求7^{803} 的后三位数字

                          解:     7^{803} (mod 1000)的结果

                                  \Phi (1000)=1000(1-\frac{1}{2} )(1-\frac{1}{5} )=400

                                       有7^{803}\equiv (7^{400} )^27^3 \equiv 343(mod 1000)

     (2)费马定理

           如果p是素数,a是正整数,且gcd(a,p)=1,那么

                   a^{p-1}\equiv 1(mod p)

          另一种形式:

               如果p是素数,a是任意正整数,则对gcd(a,p)=1,有

                   a^p\equiv a(mod p)

     (3)二次探测定理

          如果p是一个素数,且0<x<p,则方程x^2\equiv 1(mod p)的解为 x = -1、p-1。

          即如果符合(p-1)^2\equiv 1(mod p),那么p很有可能是素数,但是仍不能肯定p就是素数。

(*)判断素数的充要条件

     (1)Wilson定理

          对于给定的正整数n,判断n是一个素数的充要条件是(n-1)!\equiv -1(mod n)。

          虽然是充要条件,且Wilson的定理有很高的的理论介质。因为带有阶乘,在检测的时候计算量大,不适合检测较大素数的检测。

     (2)米勒-拉宾算法

          米勒-拉宾算法是一个多项式算法,能以接近概率1保证判断结果的正确性。

          Miller-Rabin(n)

          把n-1写成n-1=2^km,其中m是一个奇数

          选取随机整数a,使得1\leq a\leq n-1

               b=a^m(mod n)

               Ifb\equiv 1(mod n)

                    Return (‘n是素数’)

               End

               For i=0到k-1

                    If b≡-1(mod n)

                         Return (‘n是素数’)

                    Else

                         b=b^2(mod n)

                    End

               End

                    Return(‘n是合数’)

三、求最大公约数算法-欧几里得算法

欧几里得算法描述:

          两个整数用a,b表示,商用q表示,余数用r表示

          Step1      取a,b较大者为a,较小者为b

          Step2      做除法,计算并保留余数r=mod(a,b)

          Step3      将原来的除数改做被除数,余数作为除数a=b,b=r

          重复Step1和Step2直到r=0,返回b

四、用欧几里得扩展算法求乘法逆元

乘法逆元的定义:

          假设gcd(a,n)=1,则存在整数s,使得as\equiv 1(mod n),即s是a(mod n)的乘法逆元素。

     关于ax+by=d

          设a和b是两个正整数(至少有一个非零),d=gcd(a,b),则存在整数x和y使得ax+by=d成立,如果a、b互素,那 么存在整数x和y使得ax+by=1成立,此时可以求出ax≡1(mod b)中的x,即为逆元。

扩展欧几里得算法:

构造两个数列:

       


        Eg:

                 求28mod75的乘法逆元(a=75,b=28)

                      gcd(28,75)=1 所以存在逆元

                      75=2×28+19

                      28=1×19+9

                      19=2×9+1

                      9=9×1+0 

                      3×78+(-8)×28=1 

                      所以28mod75的乘法逆元为-8

五、中国剩余定理求解同余方程组

    中国剩余定理完整版

           Eg:

                   已知下列同余方程组,求解x

                   第一步:求M

                         M=2×3×5×7=210

                   第二步:求 \frac{M}{m_{i}}(i=1,2,...,k)

                        M_{1} =103,M_{2} =70,M_{3} =42,M_{4} =30

                   第三步:求e_{i}

                        e_{i}满足 \frac{M}{m_{i}} e_{i} \equiv 1(mod m_{i} )(i=1,2,...,k)

                   第四步:

                         x\equiv [ \frac{M}{m_{1}}e_{1}a_{1}+\frac{M}{m_{2}}e_{2}a_{2}+...+\frac{M}{m_{i}}e_{k}a_{k} ](mod M)

                         x\equiv (105×1×1+70×1×2+42×3×3+30×4×5)(mod 210)

                         x\equiv 173(mod 210)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容

  • 预备知识: 0. 模运算基本性质 (a + b) % p = (a % p + b % p) % p (a - b...
    耀鹏阅读 2,382评论 0 51
  • 关于使用python实现RSA加密解密 一、非对称加密算法 1、乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何...
    ttaymm阅读 938评论 0 0
  • 一、RSA的历史 1976 年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密;...
    开着保时捷堵你家门口阅读 2,344评论 0 1
  • iOS app开发过程中,真机调试,测试分发,以及正式发布到appStore上,以上所说都离不开证书,开发证书,发...
    huxinwen阅读 2,209评论 0 6
  • 晚上的时候,我戴着耳机用IPAD看电视剧。希希有些事情问我,可是我听得不是很清楚,就问了一句: “怎么啦?” 希希...
    tyriq阅读 264评论 1 11