判断101-200之间有多少个素数,并输出所有素数。   
编译通过,可以运行,但是得出的结果却有问题,结果里面包括像125,155这样的非素数.不知道问题出在哪儿..
编译运行环境netbean.完整代码如下:package sushu;
import java.lang.Math.*;class Mathe{
       public boolean issushu(int x){
        boolean flag = true;
        double n;
        n =Math.sqrt((double)x);
        for(int i=2;i<=n;i++){
            if(x%2 == 0)
                flag = false;
            break;
        }
        return flag;    }
}public class Main {    
    public static void main(String[] args) {
        int i;
        Mathe mathe = new Mathe();
        for(i=101;i<=200;i++){
            if(mathe.issushu(i) == true)
                System.out.println(i);
        }
    }}

解决方案 »

  1.   

    看不太明白你的思路,这段循环一直在 x%2 是干啥的
      double n;
      n =Math.sqrt((double)x);
      for(int i=2;i<=n;i++){
      if(x%2 == 0)
      flag = false;
      break;
      }我用我的思路改了一下,你参考一下啊
    package sushu;
    import java.lang.Math.*;
    public class test {
      public static void main(String[] args) {
      int i;
      Mathe mathe = new Mathe();
      for(i=101;i<=200;i++){
      if(mathe.issushu(i) == true){
       System.out.println(i);
      }
      }
      }}class Mathe{
      public boolean issushu(int x){
      boolean flag = true;
      //double n;
      //n =Math.sqrt((double)x);
      for(int i=2;i<x;i++){
      if(x%i == 0){
       flag = false;
       break;
      } 
      }

      return flag;
      }
    }
      

  2.   

    颜色没显示,这才是,
    package sushu;
    import java.lang.Math.*;
    public class test {
      public static void main(String[] args) {
          int i;
          Mathe mathe = new Mathe();
          for(i=101;i<=200;i++){
              if(mathe.issushu(i) == true){
                  System.out.println(i);
              }
          }
      }}class Mathe{
      public boolean issushu(int x){
          boolean flag = true;
          //删了 double n;    
          //删了 n =Math.sqrt((double)x);
          for(int i=2;i<x;i++){   //改了这段循环
              if(x%i == 0){
                  flag = false;
                  break;
              } 
          }
          return flag;
      }
    }
      

  3.   

    查了一下,看明白你思路了,这样改
      double n;
      n =Math.sqrt((double)x);
      for(int i=2;i<=n;i++){   
      if(x%2 == 0)
      flag = false;
      break;

      }
      return flag;红色的改成
      if(x%i == 0){
      flag = false;
      break;
      }
      

  4.   

    import java.lang.Math.*;
    public class Mathe {
    public  static void main(String []args){
    int count=0;
    Sushu s=new Sushu();
    for(int j=101;j<=200;j++){
    boolean m=s.isprime(j);
    if(m==true){
    System.out.print(j+"   ");
    count++;
    if(count==10){
    System.out.println();
    count=0;
    }
    }
    }



    }
    }
    class Sushu{
    public boolean isprime(int i){
    boolean flag=true;
    int n=(int)Math.sqrt(i);
    if(n<2)return false;
    for(int k=2;k<n;k++){
    if(i%k==0){
    flag=false;
    break;
    }
    }
    return flag;
    }
    }
    输出结果为:
    101   103   107   109   113   121   127   131   137   139   
    143   149   151   157   163   167   169   173   179   181   
    191   193   197   199   
      

  5.   

    你的代码改成这样:因为素数是出了自身和1之外不能被其他数整除的数,
    而你的那个for循环只是不能被2整除的:所以按3楼的给你整理了一下:
    package sushu;
    import java.lang.Math.*;class Mathe{
          public boolean issushu(int x){
      boolean flag = true;
      double n;
      n =Math.sqrt((double)x);
     if(x%i == 0){
    flag = false;
    break;
    }

      return flag;  }
    }public class Main {    
      public static void main(String[] args) {
      int i;
      Mathe mathe = new Mathe();
      for(i=101;i<=200;i++){
      if(mathe.issushu(i) == true)
      System.out.println(i);
      }
      }}