打印2到10000的所有素数,每行显示8个素数~
import java.util.*;
public class Prime { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub    
int count=1;
       int number=2;
       boolean isPrime=true; 
       for(number=2;number<10000;number++){
       for(int divisor=2;divisor<=number/2;divisor++){ 
        if(number%divisor==0){ 
        isPrime=false;
        break;
        
        } 
        if(isPrime){
        if(count%8==0){  
        System.out.print(number);
             }else{ 
              System.out.print(number+" "); 
              count++;
             } 
        number++;
        } 
       }
       }
}  
我运行之后没有显示结果,一片空白,麻烦高人帮我指点

解决方案 »

  1.   


    public class Prime { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int count=0;
        int number=2;
        boolean isPrime;
        
        for(number=2;number <10000;number++){
         isPrime = true;
         for(int divisor=2;divisor <=number/2;divisor++){
         if(number%divisor==0){
         isPrime=false;
         break;
         }
         }
         if(isPrime){
         System.out.print(number + "\t");
         count++;
         if (count % 8 == 0) {
         System.out.println();
         }
         }
        }
    }
    }
      

  2.   

    希望楼主能用eclipse等IDE自己debug追踪下,这样自己就能很清楚自己的问题在哪里了。
    在这段程序里,请问楼主自从给"isPrime"赋过初始值"true",在循环里一直都只是赋"false",也就是说头一次运行到第二个for循环,此时number=4,divisor=2,number%divisor=0,所以此时isPrime=false。从这以后,isPrime的值一直都是false(因为没有等于true的赋值语句)。
    所以肯定是不可能显示出你想要的结果的。
      

  3.   

    //for(int divisor=2;divisor <=number/2;divisor++){
                //只用比较到number的算术平方根就可以了,这样可以大量的节省资源,当number很大时
                for(int divisor=2;divisor <=Math.sqrt(number);divisor++){
                    if(number%divisor==0){
                        isPrime=false;
                        break;
                    }
                }
      

  4.   


    其实程序还可以优化     divisor++ 不用 2个for循环都用  divisor=1;divisor <=Math.sqrt(number);divisor+=2){ 
    效率提高4倍