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

标签 java primes

我使用埃拉托色尼筛法作为我的框架。它的工作范围是 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 个数字的列表。

关于java - (java) 我的素数生成器最多只能工作 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61264754/

相关文章:

java - 除了我们的声音之外,向 freeTTS 添加新的声音

java - 在JavaFX的FXML中,如何声明自定义事件的处理程序?

java - Android:将函数引用传递给 AsyncTask

java - 点击标签时出现2次

java - 将 List<Product> 转换为 Map<Integer, List<Product>>

java - 用Java生成精确的素数

java - 构建一个读取数字并表示它是质数或列出其因数的 Java 程序

c# - C# 中大型 bool 数组的问题

java - 质数计算的最短代码

Python - 删除倍数并查找素数