我使用埃拉托色尼筛法作为我的框架。它的工作范围是 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 之间的所有素数。
最佳答案
代码可以与以下主要内容一起正常工作:
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 个数字的列表。
关于java - (java) 我的素数生成器最多只能工作 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61264754/