我正在使用Eratosthenes的筛子作为框架。它从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 screen cap (sorry for shitty crop)

最佳答案

代码在以下主要代码中工作正常:

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个数字的列表。

10-08 19:34