//输出101~200的质数
public class ForWhileIf{
public static void main(String args []){
for(int i=101;i<200;i+=2){
boolean f = true;
for (int j = 2; j < i; j++){
if(i%j == 0){
f = false;
break;
}
}

if (!f) {
continue;
}

System.out.println(""+i);
}
}
}

解决方案 »

  1.   

    //输出101~200的质数
    public class ForWhileIf {
    public static void main(String args[]) {
    //质数最起码是奇数,所以每次循环后加2,这样可以减少循环次数,提高效率
    for (int i = 101; i < 200; i += 2) {
    //设置标志变量,值为false表示不是质数,但是为true不能说明是质数
    boolean f = true;
    //从2到比自己小1的值,如果能被这些数整除,就说明不是质数,
    //置f为false,退出内循环
    for (int j = 2; j < i; j++) {
    if (i % j == 0) {
    f = false;
    break;
    }
    }

    //判断标志f的值,为true时表示是质数,要打印;为false时,表示不是质数,
    //结束本次循环,继续进行下一次循环,也就是说不打印该数
    if (!f) {
    continue;
    } System.out.println("" + i);
    }
    }
    }我再程序中做了注释,看看,还有问题没?
      

  2.   


    很详细,但是麻烦问一下,第三个解释里的“值为true不能说明是质数”,为什么?不太懂。
      

  3.   

    改下二楼的代码,因为j的值从2到i/2之间,后面的(i/2 + 1)是前面的的2倍。
      

  4.   

    只有当里面的循环结束后,如果为true,就能说明是质数!但是如果里面的循环没结束呢,就不能说明是质数啊!
      

  5.   

    public static void showPrimeNumber(int start,int end) {
    boolean isPrimeNumber = true;
    if(start < 1) {
    start = 1;
    }
    for(int i=start;i<end;i++) {
    isPrimeNumber = true;

    for(int j=2;j<i;j++) {
    if(i%j==0) {
    isPrimeNumber = false;
    break;
    }
    }
    if(isPrimeNumber) {
    System.out.print(i+", ");
    }

    }
    }