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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lanbuohan 中级黑马   /  2013-7-8 02:01  /  1107 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-8 12:27 编辑

刚查有一个问题自己没有弄明白,错把奇数当做的素数,感谢帮助我指出问题的人,我看的一下大家在便利0~~100这个
整数的所有素数时,方法都有一些麻烦,我去查找的一下,这是别人写得一个代码,大家看一下,个人觉的很简洁:
for (int i = 2; i <100; i++)
{            
      for (int j = 2; j <= i; j++)      
     {           
            if (i == j)  
            {//      
                 System.out.println(i);      
            }   
             if (i % j == 0)  
            {           
                  break;   
            }      
    }     
}

5 个回复

倒序浏览
这个不简洁,内层循环不用全部判断的,我知道的是只用判断一半就行了,好像还有更少判断的。效果就是:不是素数的就不用说了,怎么写都一样。是素数可以减少判断的次数。
回复 使用道具 举报
学习学习!
回复 使用道具 举报
草貌路飞 发表于 2013-7-8 02:29
这个不简洁,内层循环不用全部判断的,我知道的是只用判断一半就行了,好像还有更少判断的。效果就是:不是 ...

那大家讨论一下怎样让这个循环更加简洁
回复 使用道具 举报
  1. public static boolean isPrime(int i)
  2.     {

  3.             
  4.                          for (int j = 2; j <=Math.sqrt(i); j++) //i=2是素数,循环不执行因为如果一个数不是质数那么它是两个数的乘积。
  5.                                                                 //这两个数一定有一个小于等于sqrt(),因此只要找较小的银子就可以了
  6.               {
  7.                 if (i % j == 0)
  8.                     return false;   //能整除说明不是素数,返回false
  9.             }
  10.         return true;
  11.     }

  12. }
复制代码
素数问题啊,我给你来个更简洁的方法,定义一个方法吧
回复 使用道具 举报
  1. public staic boolean isPrime(int i)
  2. {
  3. //你输入一个你要判断的数字I;

  4. //素数除了1和此整数自身外,无法被其他自然数整除的数

  5. //那有可能被整出的数一定是在2~~I之间。如i=16;那么能整除的数
  6. //就有2,4,8不可能超出16,这样是不就可以减少程序判断吗。
  7.         for(int j=2; j<i;j++)
  8.                {
  9.                  //这个还可以对i = 2进行判断
  10.                  if(i%j == 0)
  11.                   return false;
  12.                  }

  13.       return true;

  14. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马