hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 537|回复: 1

Baillie_PSW素性判定的代码 miller rabin 代码

[复制链接]

948

主题

1162

帖子

3655

积分

超级版主

Rank: 8Rank: 8

积分
3655

论坛头条论坛元老谋士数据帝优秀版主超级版主见习版主论坛版主

发表于 2023-10-2 16:09:07 | 显示全部楼层 |阅读模式
  1. Clear["Global`*"];(*Clear all variables*)Lucas[n0_]:=Module[    (*指定局部变量*)    {n=n0,m,s,P,Q,d,JS,mi2,UU,VV,UUtemp,VVtemp,kk},    If[Mod[n,2]==0&&n>2,Return[False]];(*排除偶数*)    If[IntegerQ[Sqrt[n]],Return[False]];(*如果是完全平方数,返回False*)    (*写成n+1=2^s*m的形式*)    m=n+1;    (*s=0;While[Mod[m,2]==0,m=m/2;s=s+1];*)    (*根据P=3 4 5 6 7 Q=1,以及雅克比符号等于-1来找到P,如果d与n有约数,则返回false,且d不应该是n的倍数*)    (*此处如果n很小,而d较大且是n的倍数,这时可能存在n是质数,而雅克比符号等于零的情况,这种情况需要特殊处理一下*)    P=3;Q=1;d=P^2-4*Q;JS=JacobiSymbol[d,n];If[JS==0,Return[False]];    While[JS==1,P=P+1;d=P^2-4*Q;JS=JacobiSymbol[d,n];If[JS==0,Return[False]]];    mi2=IntegerDigits[m,2];(*把m写成二进制的方式*)    UU=1;VV=P;(*分别是lucas序列的U(1)与V(1)的值*)    Do[        UU=Mod[UU*VV,n];        VV=Mod[VV^2-2,n];(*此处Q=1*)        If[mi2[[kk]]==1,            UUtemp=(P*UU+VV);            VVtemp=(d*UU+P*VV);            (*UUtemp,VVtemp都可能是奇数,如果是奇数,则加上一个n,这样就是偶数了,            下面才能除以2得到整数,至于为什么要这么做,我也不是太清楚为什么,            可能是由于n是奇数,模的时候,减去偶数个n奇偶性不变,而减去奇数个n奇偶性变了*)            If[OddQ[UUtemp],UUtemp=UUtemp+n];            If[OddQ[VVtemp],VVtemp=VVtemp+n];            UU=Mod[UUtemp/2,n];            VV=Mod[VVtemp/2,n]        ],        {kk,2,Length@mi2}];(*此处必须从2开始,程序没有错误!*)    If[UU==0&&Mod[VV,n]==2,Return[True],Return[False]]](*miller rabin测试,n0是被测试的整数,a0是选择的基*)MillerRabin[n0_,a0_]:=Module[{n=n0,a=a0,s,m,t1,k},    s=0;m=n-1;While[Mod[m,2]==0,m=m/2;s=s+1];    t1=PowerMod[a,m,n];    If[t1==1,Return[True]];    k=0;While[k<s-1&&t1!=n-1,k=k+1;t1=Mod[t1^2,n]];    If[t1==n-1,Return[True],Return[False]]]
复制代码
世界上最遥远的距离,不是生与死的距离,而是我站在你面前,你却不知道我爱你
回复

使用道具 举报

275

主题

454

帖子

1014

积分

大司空

Rank: 5Rank: 5

积分
1014
发表于 2023-10-2 16:09:59 | 显示全部楼层
比以前的代码稍微改进那么一点点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 16:15 , Processed in 0.066768 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表