我正在使用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个数字的列表。