我的程序应该计算素数,但在第一个数字后停止

时间:2017-06-20 20:53:48

标签: java if-statement arraylist boolean primes

所以我写了这个小程序,应该检查一个数字是否是素数,如果是这样的话,应该将它添加到一个arraylist。问题是它只是添加数字3然后停止。有人可以解释一下为什么会这样吗?

import java.util.ArrayList;
public class main{
    public static void main(String args[]){
        ArrayList Primzahlen=new ArrayList();
        int current=1;
        boolean prim=true;
        for(int a=0;a<100;a++){
            for(int b=2;b<current;b++){
                if(current%b==0){
                    prim=false;
                }
                if(b==current-1){
                    if(prim==true){
                        Primzahlen.add(current);
                    }
                }
            }
            current++;
        }
        System.out.println(Primzahlen);
    }
}

1 个答案:

答案 0 :(得分:0)

检查完当前值后,您需要将prim重置为true。

public static void main(String args[]){
        ArrayList Primzahlen=new ArrayList();
        int current=1;
        boolean prim=true;
        Primzahlen.add(2);
        for(int a=3;a<100;a++){
            for(int b=2;b<current;b++){
                if(current%b==0){
                    prim=false;
                }
                if(b==current-1){
                    if(prim==true){
                        Primzahlen.add(current);
                    }
                }
            }
            prim=true;
            current++;
        }
        System.out.println(Primzahlen);
    }

注意prim = true near current ++