欢迎来到天天文库
浏览记录
ID:15318359
大小:61.00 KB
页数:8页
时间:2018-08-02
《费马小定理 素数判定 蒙哥马利算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、费马小定理素数判定蒙哥马利算法(强烈推荐)2009-11-0712:42费马小定理素数判定蒙哥马利算法约定:x%y为x取模y,即x除以y所得的余数,当x2、有自然数C可以整除A也可以整除B,那么C就是A和B的公因数。公倍数:两个不同的自然数A和B,若有自然数C可以被A整除也可以被B整除,那么C就是A和B的公倍数。互质数:两个不同的自然数,它们只有一个公因数1,则称它们互质。费马是法国数学家,又译“费尔马”,此人巨牛,他的简介请看下面。不看不知道,一看吓一跳。http://www.cmr.com.cn/BasicStudy/LearnColumn/Maths/shuxuejiashi/j12.htm费马小定理:有N为任意正整数,P为素数,且N不能被P整除(显然N和P互质),3、则有:N^P%P=N(即:N的P次方除以P的余数是N)但是我查了很多资料见到的公式都是这个样子:(N^(P-1))%P=1后来分析了一下,两个式子其实是一样的,可以互相变形得到,原式可化为:(N^P-N)%P=0(即:N的P次方减N可以被P整除,因为由费马小定理知道N的P次方除以P的余数是N)把N提出来一个,N^P就成了你N*(N^(P-1)),那么(N^P-N)%P=0可化为:(N*(N^(P-1)-1))%P=0请注意上式,含义是:N*(N^(P-1)-1)可以被P整除又因为N*(N^(P-1)-1)必能整除N(这4、不费话么!)所以,N*(N^(P-1)-1)是N和P的公倍数,小学知识了^_^又因为前提是N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在正整数M使得等式成立:N*(N^(P-1)-1)=M*N*P两边约去N,化简之:N^(P-1)-1=M*P因为M是整数,显然:(N^(P-1)-1)%P=0即:N^(P-1)%P=1============================================积模分解公式先有一个引理,如果有:X%Z=0,即X能被Z整除,则有:(X+Y)%Z=Y%Z这个不用证了吧.5、..设有X、Y和Z三个正整数,则必有:(X*Y)%Z=((X%Z)*(Y%Z))%Z想了很长时间才证出来,要分情况讨论才行:1.当X和Y都比Z大时,必有整数A和B使下面的等式成立:X=Z*I+A(1)Y=Z*J+B(2)不用多说了吧,这是除模运算的性质!将(1)和(2)代入(X*Y)modZ得:((Z*I+A)(Z*J+B))%Z乘开,再把前三项的Z提一个出来,变形为:(Z*(Z*I*J+I*A+I*B)+A*B)%Z(3)因为Z*(Z*I*J+I*A+I*B)是Z的整数倍……晕,又来了。概据引理,(3)式可化简为:(6、A*B)%Z又因为:A=X%Z,B=Y%Z,代入上面的式子,就成了原式了。2.当X比Z大而Y比Z小时,一样的转化:X=Z*I+A代入(X*Y)%Z得:(Z*I*Y+A*Y)%Z根据引理,转化得:(A*Y)%Z因为A=X%Z,又因为Y=Y%Z,代入上式,即得到原式。同理,当X比Z小而Y比Z大时,原式也成立。3.当X比Z小,且Y也比Z小时,X=X%Z,Y=Y%Z,所以原式成立。=====================================================快速计算乘方的算法如计算2^13,则传统做7、法需要进行12次乘法。/*计算n^p*/unsignedpower(unsignedn,unsignedp){for(inti=0;i8、*(2*2)*2如果用2*2来计算,那么指数就可以除以2了,不过剩了一个,稍后再单独乘上它。再次两两分开,指数除以2:((2*2)*(2*2))*(2*2)*2实际上最后一个括号里的2*2是这回又剩下的,那么,稍后再单独乘上它现在指数已经为1了,可以计算最终结果了:16*4*2=128优化后的算法如下:unsignedPower(
2、有自然数C可以整除A也可以整除B,那么C就是A和B的公因数。公倍数:两个不同的自然数A和B,若有自然数C可以被A整除也可以被B整除,那么C就是A和B的公倍数。互质数:两个不同的自然数,它们只有一个公因数1,则称它们互质。费马是法国数学家,又译“费尔马”,此人巨牛,他的简介请看下面。不看不知道,一看吓一跳。http://www.cmr.com.cn/BasicStudy/LearnColumn/Maths/shuxuejiashi/j12.htm费马小定理:有N为任意正整数,P为素数,且N不能被P整除(显然N和P互质),
3、则有:N^P%P=N(即:N的P次方除以P的余数是N)但是我查了很多资料见到的公式都是这个样子:(N^(P-1))%P=1后来分析了一下,两个式子其实是一样的,可以互相变形得到,原式可化为:(N^P-N)%P=0(即:N的P次方减N可以被P整除,因为由费马小定理知道N的P次方除以P的余数是N)把N提出来一个,N^P就成了你N*(N^(P-1)),那么(N^P-N)%P=0可化为:(N*(N^(P-1)-1))%P=0请注意上式,含义是:N*(N^(P-1)-1)可以被P整除又因为N*(N^(P-1)-1)必能整除N(这
4、不费话么!)所以,N*(N^(P-1)-1)是N和P的公倍数,小学知识了^_^又因为前提是N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在正整数M使得等式成立:N*(N^(P-1)-1)=M*N*P两边约去N,化简之:N^(P-1)-1=M*P因为M是整数,显然:(N^(P-1)-1)%P=0即:N^(P-1)%P=1============================================积模分解公式先有一个引理,如果有:X%Z=0,即X能被Z整除,则有:(X+Y)%Z=Y%Z这个不用证了吧.
5、..设有X、Y和Z三个正整数,则必有:(X*Y)%Z=((X%Z)*(Y%Z))%Z想了很长时间才证出来,要分情况讨论才行:1.当X和Y都比Z大时,必有整数A和B使下面的等式成立:X=Z*I+A(1)Y=Z*J+B(2)不用多说了吧,这是除模运算的性质!将(1)和(2)代入(X*Y)modZ得:((Z*I+A)(Z*J+B))%Z乘开,再把前三项的Z提一个出来,变形为:(Z*(Z*I*J+I*A+I*B)+A*B)%Z(3)因为Z*(Z*I*J+I*A+I*B)是Z的整数倍……晕,又来了。概据引理,(3)式可化简为:(
6、A*B)%Z又因为:A=X%Z,B=Y%Z,代入上面的式子,就成了原式了。2.当X比Z大而Y比Z小时,一样的转化:X=Z*I+A代入(X*Y)%Z得:(Z*I*Y+A*Y)%Z根据引理,转化得:(A*Y)%Z因为A=X%Z,又因为Y=Y%Z,代入上式,即得到原式。同理,当X比Z小而Y比Z大时,原式也成立。3.当X比Z小,且Y也比Z小时,X=X%Z,Y=Y%Z,所以原式成立。=====================================================快速计算乘方的算法如计算2^13,则传统做
7、法需要进行12次乘法。/*计算n^p*/unsignedpower(unsignedn,unsignedp){for(inti=0;i
8、*(2*2)*2如果用2*2来计算,那么指数就可以除以2了,不过剩了一个,稍后再单独乘上它。再次两两分开,指数除以2:((2*2)*(2*2))*(2*2)*2实际上最后一个括号里的2*2是这回又剩下的,那么,稍后再单独乘上它现在指数已经为1了,可以计算最终结果了:16*4*2=128优化后的算法如下:unsignedPower(
此文档下载收益归作者所有