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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李贺晓 中级黑马   /  2012-11-8 15:01  /  1534 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test2
{
public static void main(String[] args)
{
  int count=0;
  for(int i=101;i<200;i+=2)
  {
   boolean flag=false;
   for(int j=2;j<Math.sqrt(i);j++)//这里j为什么要小于Math.sqrt(i)呢??这个是怎么确定的
   {
    if(i%j==0)
    {
     flag=false;
     break;
    }
    else
    {
     flag=true;
    }
   }
   if(flag=true)
   {
    count++;
    System.out.println(i);
   }
  }
  System.out.println("素数的个数为:"+count);
}
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

2 个回复

倒序浏览
判断一个数为素数的依据就是 它不能被2到它的平方根的所有数整除。
for(int j=2;j<Math.sqrt(i);j++)//所以这里j<=Math.sqrt(i)。应该是小于或等于吧!

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 林剑 于 2012-11-8 16:15 编辑

for(int j=2;j<Math.sqrt(i);j++)//
Math.sqrt(i)就是i开根号,要判断一个数是否是素数只要判断它是否能被1和它自身以外的整数整除,for(int j=2;j<=i;j++)用这句话替代原来的循环语句也是没有问题的,用Math.sqrt(i)主要是减少计算量而已

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马