Моя программа должна вычислять простые числа, но останавливается после первого числа

Итак, я написал эту небольшую программу, которая должна проверять, является ли число простым числом, и если это так, следует добавить его в массив. Проблема в том, что он просто добавляет число 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 ответ

Вам нужно сбросить 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);
    }

Обратите внимание на прим =true вблизи текущего ++

Другие вопросы по тегам