解决方案 »

  1.   

    因为 i / 2 与 i 之间的数都不会被i 整除。比如 i = 12,  i / 2 = 6; 7  ~ 12 之间的数都不会被12 整除
      

  2.   

    }else if (j>i/2) {折半的意思。好比,   比如 60除以 2等于 30 。    30以后就不用找了因为除以2已 代表了素数。
      

  3.   

    public static boolean isPrime(int n){
        if(n==1){
            return false;
        }else if(n==2){
            return true;
        }else{
            int half=(int) Math.sqrt(n);
            for(int i=2;i<=half;i++){
                if(n%i==0){
                    return false;
                }
            }
            return true;
        }
    }
    对于这个算法效率会更高,建议采用这种方法
      

  4.   

    应该是从3到平方根,public static int m(){
    boolean bool;
    int num = 0;
    for (int i = 3; i < 100; i+=2) {//偶数不用遍历
    bool = true;
    for (int j = 3; j <= Math.sqrt(i); j++) {
    if (i % j == 0) {
    bool = false;
    break;
    }
    }
    if (bool){
    System.out.print(i + " ");
    num += i;
    }
    }
    return num;
    }