这是我写的一个求100到200以内的质数的JAVA小程序,在每次运行的时候都输出好多次同样的数,这是为什么呢?
public class Test3{
public static void main(String args[]){
for( int i=101; i<200; i+=2){
boolean f = true;
for(int j=2;j<i;j++){
if(i%j==0){
f = false;
break;
}
if(!f)
{continue;}
System.out.println(i);

}
}
}

解决方案 »

  1.   

    你的break之后后面的
    if(!f)
    {continue;}
    System.out.println(i);
    就不会执行了
      

  2.   

    public class Test3{
    public static void main(String args[]){
    for( int i=101; i<200; i+=2){
    boolean f = true;
    for(int j=2;j<i;j++){
    if(i%j==0){
    f = false;
    System.out.println(i);
    break;
    }
    if(!f)
    {continue;}} 
    }
    }
    }
      

  3.   

    可是我的确输出了结果啊 只是有很多重复的  break 应该只能对于一层吧  只对一个IF有用吧
      

  4.   

    可是我的确输出了结果啊 只是有很多重复的  break 应该只能对于一层吧  只对一个IF有用吧
      

  5.   

    把打印那句拿出来就好了
    public class Test3{
       public static void main(String args[]){
          for( int i=101; i<200; i+=2){
             boolean f = true;
             for(int j=2;(j<i/2 + 1)&&f;j++)
                if(i%j==0) f = false;
             if(!f) continue;
             System.out.println(i);
          }
       }
    }
      

  6.   

    http://wzdn.5d6d.com/thread-92-1-1.html
    这里面应该够全的
      

  7.   

    if(!f) continue;这句应该改成
    if(f) continue;
      

  8.   


    public class Test3
    {
    public static void main(String args[])
    {
    for( int i=101; i<200; i+=2)
    {
    boolean f = true;
    for(int j=2;j<i;j++)
    {
    if(i%j==0)
    {
    f = false;
    break;
    } }
    if(!f)
    System.out.println(i);
    }
    }
    }
      

  9.   


    public class Test3 {
    public static void main(String[] args) {
    t1();
    } public static void t1() {
    // 取100到200的每一个数i
    for (int i = 100; i <= 200; i++) {
    // f表示没有余数
    boolean f = true;
    // 取到的数依次除以2到i/2
    for (int j = 2; j < i / 2; j++) {
    // 如果余数等于0则不是质数
    if (i % j == 0) {
    f = false;
    break;
    }
    }
    if (f) {
    System.out.print("  " + i);
    }
    } }
    }
      

  10.   

    你理解错了!第一个for是用来判断是不是质数!在这个里面你第二个if可是输出了相当多的数了!即使他不是质数也会被你打印出来了!就比如说105吧,当第一个if中j=2的时候一样会被打印出来的!所以要是199的话就被打印出了197次当然会想当多了是吧!真正要打印的话就在第二个for里喽!做法嘛就是15楼的的
    public class Test3
    {
        public static void main(String args[])
        {
            for( int i=101; i<200; i+=2)
            {
                boolean f = true;
                for(int j=2;j<i;j++)
                {
                    if(i%j==0)
                    {
                        f = false;
                        break;
                    }            }
                if(!f)
                System.out.println(i);
            }
        }
    }
      

  11.   

    public static void main(String args[]) {
    for (int i = 101; i < 200; i += 2) {
    boolean f = true;
    for (int j = 2; j < i; j++) {
    if(i % j != 0){
    System.out.println(i);
    break;
    }
    }
    }
    }
      

  12.   


    public class PrimeTest{
    // 判断一个整数num是否是素数
    public static boolean checkPrime(int num) {
    if (num < 0)// 负数不是素数
    {
    return false;
    }
    if (num == 1 || num == 2)// 1和2是素数
    {
    return true;
    }
    for (int i = 2; i < Math.sqrt(num) + 1; i++) {
    if (num % i == 0) {
    return false;
    }
    }
    return true;
    } // 获取start——end间素数的个数,并打印出素数
    public static int getPrimeNum(int start, int end) {
    int sum = 0;
    for (int i = start; i <= end; i++) {
    if (checkPrime(i) == true)// 是素数
    {
    System.out.print(i + " ");
    sum++;
    }
    }
    return sum;
    } public static void main(String args[]) {
    int start = 100;
    int end = 200;
    int sum = getPrimeNum(start, end);
    System.out.println("\n" + start + "~" + end + "间共有" + sum + "个素数!");
    }
    }
    // 简单明了!!楼主还有什么不明白的吗?