黑马程序员技术交流社区

标题: 高效求素数。不知还有没有更高效的? [打印本页]

作者: 夜写意    时间: 2015-7-13 01:10
标题: 高效求素数。不知还有没有更高效的?
本帖最后由 夜写意 于 2015-7-13 01:19 编辑

自己写的,只把最核心的代码写出来,其他的没写。还有没有更高效的,求分享!!!!这个是用于求1~n的之间的素数。数组长度可以定为n/2 或更短,这个我没去仔细思考过
循环调用此方法。  如果是要找X~Y之间的素数还需要把1~X之间的素数先找出来。其他不过多做解释

  1.         //定义一个方法,接收一个数组和需要判断的数字
  2.         //如果此数是素数,把他加到数组里。
  3.         static int[] getNums(int[] nums,int num){
  4.                 if(nums[0] == 0){
  5.                         nums[0] = 2;
  6.                 }
  7.                 /**/
  8.                 int count = 1;
  9.                 for(int i=0; i<nums.length; i++){
  10.                         if(count == 0 || num == 1){
  11.                                 break;
  12.                         }else if(nums[i] != 0){
  13.                                 count = (num % nums[i]);
  14.                         }else{
  15.                                 nums[i] = num;
  16.                                 break;
  17.                         }
  18.                 }
  19.                 return nums;
  20.         }
复制代码


作者: Claw    时间: 2015-7-13 10:10
我只知道如果追求步骤最简的话是可以将长度缩减到n的平方根。

math.sqrt(double n);
作者: 825176857    时间: 2015-7-13 10:35
学习学习!
作者: as604049322    时间: 2015-7-13 12:18
这个初级求素数的方法初级都没达到啊,,谈不上高效
作者: as604049322    时间: 2015-7-13 12:20
java在三秒内筛出1亿范围内的素数,能力有限无法继续优化
http://bbs.itheima.com/thread-197292-1-1.html
(出处: 黑马程序员IT技术论坛)
给个中级的看看吧,不过时间久了,我自己都看不太懂了
作者: 炎舞霜冬    时间: 2015-7-13 21:38
虽然看不懂.但是顶了




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