MillerRabin

介绍了Miller-Rabin算法的基本原理及其素数判定过程。通过特定的数学规则和步骤,可以高效地验证一个数是否为素数,并给出了详细的判定流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Miller-Rabin算法的理论基础
如果n是一个奇素数,将n1表示成2sr的形式(r是奇数),a是和n互素的任何整数,那么ar1(mod n) 或者对某个j(0js1,jZ)等式a2jr1(mod n)成立。

素数判定思路
1.如果ad1(mod n),以及(n=1+2sd)是素数,则值序列:
admod na2dmod na4dmod na8dmod n ……,,a2sdmod n 将以1结束,而且在头一个1的前边的值僵尸n1(当p是素数时,对于y21(mod p)) 仅有的解是y=±1,因为(y+1)(y1)必须为p的倍数。

2.如果该序列中出现了n1, 则该序列的下一个值一定是1,(因为(n1)2=n22n+11(mod n))

步骤
1. 将n1分解成2sd的形式。
2. 将(310)行循环k次。(出错概率为(14)k
3. ~在[2,n2]的范围中独立&随机地选择一个正整数a
4. ~计算该序列的第一个值x=admod n
5. ~如果该序列的第一个值是1n1,符合上述条件,n可能为素数,转到第3行进行下一次循环。
6. ~循环执行79行,顺序遍历该序列的剩下的(s1)个值
7. ~~计算该序列的下一个值:x=ximod n
8. ~~如果这个值是1,但前边的值不是n1,不符上述条件,n肯定为合数,算法结束。
9. ~~如果这个值是n1,因此下一个值一定是1,符合上述条件,n可能为素数,转到第3行进行下一次循环。
10. ~发现该序列不是以1结束,不符上述条件,因此n肯定为合数,算法结束。
11. 已经对k个独立&随机的a值进行了检验,因此判断n非常有可能为素数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值