素数判定随机算法java实现
来源:互联网 发布:加速度测量软件 编辑:程序博客网 时间:2024/05/23 01:57
使用随机算法可以在判断素数时大大的提高计算效率
一般的常用方法:
public static int prime(int n){for(int i=2 ; i<Math.sqrt(n) ; i++){if(n%i==0){return 0;}}return 1;}
Fermat小定理实现的随机算法:
public static int prime0(int n){for(int i=0 ; i<2 ; i++){//a为1到n-1之间的任意的整数int a = (int) (Math.random()*(n-1)+1);System.out.println(a);//根据费马定理,下面计算a的n-1次幂的值int z=a, m=n-1, y=1;while(m>0){while(m%2==0){z = (z*z)%n;m /= 2;}m--;y = (y*z)%n;}if(y != 1){return 0;}}return 1;}Miller-Rabin的素数测试算法:
public static int prime1(int n){for(int i=0 ; i<2 ; i++){//a为1到n-1之间的任意的整数int a = (int) (Math.random()*(n-1)+1);System.out.println(a);//根据费马定理,下面计算a的n-1次幂的值int z=a, m=n-1, y=1;while(m>0){while(m%2==0){int x =z;z = (z*z)%n;m /= 2;if(z==1 && x!=1 &&x!=n-1){return 0;}}m--;y = (y*z)%n;}if(y != 1){return 0;}}return 1;}
三种方法测试程序:
第一种方法:
public class Test {public static void main(String[] args) {int num = 561;if(Prime.prime(num)==0){System.out.println(num+"不是素数!");}else{System.out.println(num+"是素数!");}}}
输出结果:
561是素数
第二种方法:
public class Test {public static void main(String[] args) {int num = 561;if(Prime.prime0(num)==0){System.out.println(num+"不是素数!");}else{System.out.println(num+"是素数!");}}}
输出结果:
343437561是素数!
第三种方法:
public class Test {public static void main(String[] args) {int num = 561;if(Prime.prime1(num)==0){System.out.println(num+"不是素数!");}else{System.out.println(num+"是素数!");}}}输出结果:
147561不是素数!
0 0
- 素数判定随机算法java实现
- 随机算法之素数判定
- 素数判定算法,紫书P194素数判定
- 素数判定随机化算法
- 素数判定算法
- 素数判定算法
- 素数判定算法小结
- 素数判定算法
- hdoj2012(java)素数判定
- java hdu2012素数判定
- miller rabin 随机素数判定法模版
- Rabin -Miller算法判定素数
- 素数的Miller_Rabbin判定算法
- 【算法记录1】判定素数
- 素数判定Miller_Rabin 算法详解
- 质数(素数)判定算法
- 算法杂项:快速判定素数(素数表)
- 随机算法 素数测试
- unity3d学习(一)制作第一人称射击-玩家的视口和移动
- Androidxml的解析
- self.navigationController?.popViewController(animated: true)
- HashMap学习笔记
- List,Map,Bean等对象转化为Json的方式
- 素数判定随机算法java实现
- Android实现购物车加减器控件
- 紫书---
- 关于ubuntu下phpstrom运行程序 502 Bad Gateway
- nodejs-fs模块
- 使用MyEclipse工具,Struts2开发环境的搭建
- 兼容苹果手机的前端设置
- 3D
- 文章标题