(java) Мой генератор простых чисел работает только до 200 - PullRequest
0 голосов
/ 17 апреля 2020

Я использую сито Эратосфена в качестве основы. Он работает со 2-199, но он просто останавливает печать значений за пределами этого. Вот мой код:

import java.util.ArrayList;
public class Scratchpad
{
    public Scratchpad()
    {

    }

    public ArrayList<Integer> makeList(int max)
    {
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        for (int i = 2; i <= max; i++)
        {
            arrList.add(i);
        }
        return arrList;
    }

    public ArrayList<Integer> removeMult(ArrayList<Integer> arrList, int n)
    {
        for (int i = 0; i < arrList.size(); i++)
        {
            if ((arrList.get(i) % n == 0) && arrList.get(i) != n)
            {
                arrList.remove(i);
                i--;
            }
        }
        return arrList;
    }

    public ArrayList<Integer> primesOnly(ArrayList<Integer> arrList)
    {
        for (int i = 0; i < arrList.size(); i++)
        {
            removeMult(arrList, arrList.get(i));
            System.out.println(arrList.get(i));
        }
        return arrList;
    }
}

Работает для всех простых чисел 2-199.

cmd экранная крышка (извините за дерьмовый кроп)

1 Ответ

1 голос
/ 17 апреля 2020

Код прекрасно работает со следующим основным:

public static void main (String[] args) {

    Scratchpad s = new Scratchpad();

    ArrayList nums = s.makeList(500);

    System.out.println(nums);
    System.out.println(s.primesOnly(nums));

}

Я думаю, вы, вероятно, только что сгенерировали список чисел до 200.

...