黑马程序员技术交流社区

标题: java筛选法求素数 [打印本页]

作者: Smilexs    时间: 2015-9-26 11:51
标题: java筛选法求素数
本帖最后由 Smilexs 于 2015-9-26 11:55 编辑

不了解筛选法,还请自行百度,通过筛选法可以比较快速求得素数,也没什么高深的技术,分享一下,不多说,直接上代码伺候!如果对你有帮助,还请点个赞,新人报道
  1. /**
  2.          * 功能:筛选法求素数(主要是素数倍数的数,肯定不是素数)
  3.          * @author Smilexs
  4.          * @param severalPrime 第几个素数
  5.          */
  6.         public void getPrime(int severalPrime){
  7.                 if(severalPrime<=0||severalPrime==1){
  8.                         System.out.println("第1个素数是:2");
  9.                         return;
  10.                 }
  11.                 int [] a =new int[severalPrime];//存放素数 的 数组
  12.                 int index=0;//数组下标
  13.                 a[index]=2;//第一个素数=2
  14.                
  15.                 for(int n=3;;n++){
  16.                         boolean flag=true;//标记是否是 素数,每次循环假定是 素数
  17.                         /*
  18.                          * 关键:
  19.                          * 数组中遍历,n是否是数组里面某个数的倍数
  20.                          * Math.sqrt(index) 大大大的提高了 运算速度
  21.                          */
  22.                         for(int j=0;j<=Math.sqrt(index);j++){
  23.                                 if(n%a[j]==0){
  24.                                         flag=false;//不是素数,直接下一轮
  25.                                         break;
  26.                                 }
  27.                         }
  28.                        
  29.                         if(flag){
  30.                                 index++;
  31.                                 a[index]=n;//是素数 存放数组里
  32.                         }
  33.                         if(index==severalPrime-1)break;
  34.                 }
  35.                 System.out.println("第"+severalPrime+"个素数是:"+a[severalPrime-1]);
  36.         }
复制代码







作者: ln0491    时间: 2015-9-26 13:20
学习了。。。。。。。。。。。。。
作者: a8336675    时间: 2015-9-26 13:28
学习学习。
作者: 罗志辉    时间: 2015-9-26 17:08
学学习习
作者: 楼夜雪    时间: 2015-9-26 17:19
学习学学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2