拿从2到你所验证的数开平方后所得的数的整数部分做循环,用每一个数去除你要验证的数,如果其中一个得到整数,就放弃(break),如果都不能被整除,就说明是质数。

解决方案 »

  1.   

    其实上面的说的很对.但你的问题是:用for和%.所以我想是这样:boolean b;for(int i=2; i<1000; i++){
        b=true;
        for(int j=2; j<i/2+1; j++){
            if(i%j==0){
                b=false;
                break;
            }
        }
        if(b) System.out.println(i);
    }大概思路就是这样,可能有错.还请你调试一下.
      

  2.   

    多谢2位,求出来了。但想问一下,为什么要j<i/2+1呢?而不是加j<i?
      

  3.   

    很简单的道理,比如:
    20=10*2
    21=10*2+1
    那么在除到10(这个数的一半)之前已经有一个数可以整除它了,就没必要再继续除下去了.那样只是在浪费时间.
    甚至可以:
    j<Math.sqrt(i)+1