素数判定算法

 

素数判定算法
(当且仅当n为素数时,最终输出数才为素数)

   lnput:   integer   n>1
      1.if (n is of the form   a^b, b>1)output COMPOSITE;
    2.R=2
    3.while (r<n) {
    4. if(ged(n,r)≠1) output COMPOSITE;
    5. if(r is prime)
    6.        let   q   be the largest prime factor of r-1
    7.        if(q≥4^r/2 logn)and (n(r-1)/q≠1(mod r))
    8.       break;
    9. r←r+1;
    10. }
    11.for   a=1 to 2r^1/2 logn
    12.   if ((x-a)^n≠(x^n-a)(mod x^r-1,n))output COMPOSITE;
    13.output PRIME;

算法的大意是这样吧:
如果 n 是a^b 这种形式, 其中b>1,则n不是素数;
r从2开始到n-1,
如果ged(n,r)≠1说明n不是素数;
如果r是素数,
小于 r 的最大素数 q 满足 q≥4^r/2 logn)and (n(r-1)/q≠1(mod r)时,或者直到r=n时,
再判断:如果(x-a)^n≠(x^n-a)(mod x^r-1,n),其中a=1 to 2r^1/2 logn,则说明n不是素数;
否则n是素数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值