Java找素数,结果重复出现

public class PrimeNumber02{

  public static void main(String [ ] args)

  {        int count = 0;

  boolean b ; 

  for(int i = 101;i<200;i+=2)

 {

      for(int j = 2;j<=Math.sqrt(i);j++)

 {

       if(i%j==0){  break;}

                       else{ b=true;}

                       if(b) {

                                  count++;

 System.out.print(i);

 if(count%5==0)

 System.out.println();

}

  }   

  }   

   }

}

运行结果是:

101101101101101

101101101101103

103......

我想要的是:

101 103 107 109 113 

127 131 137 139 149 

151 157 163 167 173 

179 181 191 193 197 

199 

所以上诉的代码错在哪里?



MADAO7
浏览 1545回答 1
1回答

guozhchun

for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { break; } // 从这里以下的代码错了。 // 判断一个数是否是素数需要等这个循环结束后在循环外判断,也就是需要判断是否全不能被这些数整除 // 而不是一个数不能整除就置为true并输出 // 可以模拟程序的运行过程,当j = 2 时,b = true,然后进入if(b)输出结果 // 当j = 3 时, 再次进入if(b)输出结果。 // 如果没有跳出循环,则多次输出结果到循环结束 else { b = true; } if (b) { count++; System.out.print(i); if (count % 5 == 0) System.out.println(); } }参考的实现代码如下public class PrimeNumber02 { public static void main(String[] args) { int count = 0; boolean b; for (int i = 101; i < 200; i += 2) { b = true;  // 用于判断是否是素数,如果被某个数整除,则为false,否则为true for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { b = false; break; } } if (b) { count++; System.out.print(i + " "); if (count % 5 == 0) System.out.println(); } } } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java