测试一个大数是否是素数
来源:互联网 发布:js面向对象教程 编辑:程序博客网 时间:2024/05/21 11:21
如果P是素数,且0 < A < P,那么AP-1≡1(mod P)。
利用这个定理判定N是否为素数,随机生成一个A,1 < A < N-1,如果得到余数不是1,则N不是素数。如果余数是1,则N很可能是素数。如果要降低错误率,需要添加额外的测试。还可以增加判定的次数。
如果P是素数且0< X < P,那么X2≡1(mod P)仅有的两个解为X=1,P-1。
witness算法运行一次有75%的可能是正确的。
int witness(const int & a,const int & i,const int & n){ if(i==0) return 1; int x=witness(a,i/2,n); if(x==0) return 0; int y=(x*x)%n; if(y==1&&x!=1&&x!=n-1) return 0; if(i%2!=0) y=(a*y)%n; return y;}int main(){ Random rand(1); int n=561; int trials=5; for(int count=0;count<trials;++count) { //生成[2,n-1)间的随机整数 if(witness(rand.randomInt(2, n-1), n-1, n)!=1) return 0; } return 1;}
如果没有额外的测试,很容易将561判定为素数。添加额外的测试或者增加判定次数为10,则会出现正确的结果
阅读全文
0 0
- 测试一个大数是否是素数
- 判定一个大数是否素数
- 判断大数是否是素数问题
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数!!!
- 判断一个数是否是素数
- 判断一个数是否是素数
- 判定一个数是否是素数
- 判断一个数是否是素数
- 判断一个数是否是素数
- python判断一个数是否是素数
- 十一、判断一个数字是否是素数
- 判断一个数是否是素数
- canvas实现简单的画图功能
- 美团编程
- docker-1
- 深入浅出TensorFlow(二):TensorFlow解决MNIST问题入门
- web前端知识总结2
- 测试一个大数是否是素数
- RecyclerView第三方开源
- 计算分数加减表达式的值
- cookie 和session 的区别详解
- next数组求解详解
- 虚拟机3种网络模式(桥接、NAT、Host-only)
- lintcode-Continuous Subarray Sum
- Android隐式启动intent-filter详解
- 设计模式的基本原则