A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 夜写意 于 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.         }
复制代码

5 个回复

倒序浏览
我只知道如果追求步骤最简的话是可以将长度缩减到n的平方根。

math.sqrt(double n);
回复 使用道具 举报
学习学习!
回复 使用道具 举报
这个初级求素数的方法初级都没达到啊,,谈不上高效
回复 使用道具 举报
java在三秒内筛出1亿范围内的素数,能力有限无法继续优化
http://bbs.itheima.com/thread-197292-1-1.html
(出处: 黑马程序员IT技术论坛)
给个中级的看看吧,不过时间久了,我自己都看不太懂了
回复 使用道具 举报
虽然看不懂.但是顶了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马