java吧 关注:1,211,204贴子:12,652,631
  • 9回复贴,共1

大神帮忙看下为啥会输出两次相同的结果呢?

只看楼主收藏回复

int sqrt=0;
int sum=0;
for(int i=101;i<=200;i++){
sqrt=i;
for(int j=2;j<sqrt;j++){
if(sqrt%j==0)//不是素数
break;
else
sum=sqrt;
}
System.out.println(sum+"是素数");
}


1楼2016-02-15 01:11回复
    我才学到泛型,循环还没学到


    IP属地:江苏来自Android客户端2楼2016-02-15 03:50
    回复
      if,else语句的哪里的大括号呢?


      来自Android客户端3楼2016-02-15 05:44
      收起回复
        你这个神奇的写法,你不觉得做了很多没用的声明和赋值么~至于结果一样是因为你写错了,首先你那个sum的赋值就不对,for循环每次都要进行if判定,你这么写,那就是只要sqrt%2!=0,就给sum赋值了,这个就有错。然后你的输出语句在第一个for循环里,又没加任何判定条件,那么每次循环都要输出一次,也就是说总共要输出一百次xxx是素数。喵,就是这样


        IP属地:北京来自Android客户端4楼2016-02-15 05:47
        收起回复
          这样吧,我给你改一下,你看看 int sqrt=0;
          int sum=0;
          for(int i=101;i<=200;i++){
          sqrt=i;
          sum=sqrt;
          for(int j=2;j<sqrt;j++){
          if(sqrt%j==0)//不是素数
          {
          sum=0;
          break;
          }
          }
          if(sum!=0)
          System.out.println(sum+"是素数");
          }


          IP属地:北京来自Android客户端5楼2016-02-15 05:52
          收起回复
            你那个不管是不是素数都会输出是素数啊,最后一句没有条件限制


            IP属地:重庆来自Android客户端6楼2016-02-15 05:57
            回复
              这个算法不对,一定范围内的质数个数的算法是两层循环用布尔开关循环计数器做出来。


              来自Android客户端7楼2016-02-15 07:07
              回复