黑马程序员————java实现:筛选法求素数

来源:互联网 发布:mac上android真机调试 编辑:程序博客网 时间:2024/05/24 06:09
------www.itheima.com Java培训、Android培训、iOS培训、.Net培训期待与您交流! -------
不了解筛选法,还请自行百度,筛选法可以快速求的素数,不多说,直接上代码伺候!
/** * 功能:筛选法求素数(主要是素数倍数的数,肯定不是素数) * @author Smilexs * @param severalPrime 第几个素数 */public void getPrime(int severalPrime){if(severalPrime<=0||severalPrime==1){System.out.println("第1个素数是:2");return;}int [] a =new int[severalPrime];//存放素数 的 数组int index=0;//数组下标a[index]=2;//第一个素数=2for(int n=3;;n++){boolean flag=true;//标记是否是 素数,每次循环假定是 素数/* * 关键: * 数组中遍历,n是否是数组里面某个数的倍数 * Math.sqrt(index) 大大大的提高了 运算速度 */for(int j=0;j<=Math.sqrt(index);j++){if(n%a[j]==0){flag=false;//不是素数,直接下一轮break;}}if(flag){index++;a[index]=n;//是素数 存放数组里}if(index==severalPrime-1)break;}System.out.println("第"+severalPrime+"个素数是:"+a[severalPrime-1]);}
结果:
  


0 0