(java)我的素数生成器最多只能工作200

  • 本文关键字:工作 java java primes
  • 更新时间 :
  • 英文 :


我使用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屏幕盖(对不起糟糕的作物(

代码与以下main配合良好:

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

最新更新