算法有问题吧?for(j=2;j<i/2;j++)
  if(i%j!=0)
    continue;
else if(j>=i/2)
   cnt++;感觉结构混乱逻辑不清不知道你要干什么。

解决方案 »

  1.   

    class sushu  extends Thread
    {
       private int cnt=0;
       private int a;
       private int b;
       public sushu(int m,int n)
       {
          a=m;
          b=n;
       }
       public int set()
       {
          
         int i,j, squareOfI;
          for( i = a+1; i < b ;i++ ){
            squareOfI = (int)Math.sqrt( (double)i );
            for(j=2;j<= squareOfI;j++){
             if(i%j!=0)
              continue;
             else
              break;
            }
            if( j > squareOfI ){
             cnt++;
             System.out.println( i );
            }
             
          }
          return cnt;
       }
       public void run()
       {
          System.out.println("cnt="+set());
       }
    }
    public class Test7
    {
       public static void main( String args[] ){
          sushu b1 = new sushu( 2,10000 );
          b1.start();
       }
    }
      

  2.   

    增加了一个变量squareOfI
    这部分
    for(j=2;j<= squareOfI;j++){
             if(i%j!=0)
              continue;
             else
              break;
            }
            if( j > squareOfI ){
             cnt++;
             System.out.println( i );
            }
    算法改动了一下
    看看~~
    这个算法比较马马虎虎~