当前位置: 首页 > 知识库问答 >
问题:

我试图计算素数,但在素数内部有问题

任长卿
2023-03-14
//i have this so far

public class Primes {
    private boolean[] nums;
    private int upperbound;

    public Primes(int n) {

        nums = new boolean[n + 1];
        for (int i = 2; i <= n; i++)
            nums[i] = true;
    }

    public static final int DEFAULT_UPPER_BOUND = 100 + 1;

    public boolean isPrime(int x) {
        if (nums[x] == true) {
            return true;
        } else {
            return false;
        }
    }

    public boolean isComposite(int x) {
        if (nums[x] == true) {
            return false;
        } else {
            return true;
        }
    }

    public int getPrimesWithin(int min, int max) {
        for (int n = min; n <= max; n++) {
            if (nums[n] == true) {
                return n;
            }

        }
        return max;

    }

    public String toString() {
        String a = "";
        a += (nums) + " ";
        return a;
    }

    public int getUpperBound() {
        return nums.length;
    }

    public int nthPrime(int n) {
        int count = 0;
        int index = 2;

        while (count < n) {
            if (nums[index] = true) {
                count++;
            }
        }
        return index;
    }

    public void computePrimes(int x) {
        for (int i = 2; i * i <= x; i++) {
            if (nums[i]) {
                for (int j = i; i * j <= x; j++) {
                    nums[i * j] = false;
                }
            }
        }
    }

    void changeUpperBound(int x) {
        upperbound = x;
    }

}

//it needs to fit this

public class Prime {
    public static void main(String[] args) {
        Primes somePrimes = new Primes();
        System.out.println("Default Prime object");
        System.out.println(somePrimes);
        System.out.println("Upper Bound: " + somePrimes.getUpperBound());
        System.out.println("4th prime: " + somePrimes.nthPrime(4));
        System.out.println("7 prime?: " + somePrimes.isPrime(7));
        System.out.println("7 composite?: " + somePrimes.isComposite(7));
        somePrimes.changeUpperBound(50);
        System.out.println(somePrimes);
        int[] primes = somePrimes.getPrimesWithin(40, 50);
        System.out.print("Primes between 40 and 50: ");
        for (int p : primes)
            System.out.print(p + " ");
        System.out.println();

        System.out.println("*******************");

        Primes myPrimes = new Primes(53);
        System.out.println(myPrimes);
        System.out.println("Upper Bound: " + myPrimes.getUpperBound());
        System.out.println("10th prime: " + myPrimes.nthPrime(10));
        System.out.println("15 prime?: " + myPrimes.isPrime(15));
        System.out.println("15 composite?: " + myPrimes.isComposite(15));
        myPrimes.changeUpperBound(200);
        System.out.println(myPrimes);
        int[] primes2 = myPrimes.getPrimesWithin(50, 97);
        System.out.print("Primes between 50 and 97: ");
        for (int p : primes2)
            System.out.print(p + " ");
        System.out.println();
    }
}

// i am not sure how to make the primeswithin work and if you notice any other errors there are probably several

素数类规范:

实例字段:
私有布尔[]数;//您可以选择另一个逻辑名称//是一个所需大小的变量,或者我们可以只使用.length?

素数通过53:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53上界:53第10素数:29 15素数?:假15复合?:真素数通过200:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 149 151 157 167 163 173 173 181 193 197 193 197 199 191 193 197 199 199素数在50和97之间:53 59 61 67 73 79 83 89 97

共有1个答案

寇景明
2023-03-14

使用ArrayList 而不是int[]作为PrimesInde的返回类型。在所需范围内遍历大数组,对于每个素数,将其添加到ArrayList

 类似资料:
  • 本文向大家介绍计算C ++中数组中的素数,包括了计算C ++中数组中的素数的使用技巧和注意事项,需要的朋友参考一下 给我们一个数字数组。目的是找到该数组中素数的计数。 质数是可以被1和数字本身整除的数。它只有两个因素。我们将检查从第一个元素到最后一个元素是否为质数,并增加迄今发现的质数。 要检查数字N是否为质数,请检查[2到N / 2]范围之间的数字是否将N整除。如果是,则它不是质数。否则,它是首

  • 我正在尝试欧拉项目的问题3,我的算法太慢了。有人知道如何优化它吗?我试图计算的数字是600851475143L。计算这个需要很长时间,所以我需要一种方法来加快计算速度。 逻辑: > 把从3到1的所有数字通读一遍 对于这些数字中的每一个,通过将它们除以中间的所有数字来检查它们是否为素数,如果它们不除以任何一个,则它们为素数 如果为素数,则将其添加到数组中。 **********更新*********

  • 问题内容: 说我有阵列 数组的长度为20,但计数为0。如何获取计数? 问题答案: “计数”是什么意思?具有非零值的元素数量?您只需要数一下。 有 没有区别 数组和一个已之间 明确地 设置与零个值。例如,这些数组是无法区分的: Java中的数组始终具有固定大小-可通过字段访问。没有“当前使用的阵列数量”的概念。

  • 问题内容: 我有一个整数数组,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中,我存储了重复的元素。该数组存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。 我希望输出看起来像这样: 例如: 如何找到重复的元素及其计数?如何如上所示打印它们? 问题答案: 字典(Java中的HashMap)可以轻松解决此类问题。

  • 本文向大家介绍MongoDB中如何访问JSON数组的内部元素,包括了MongoDB中如何访问JSON数组的内部元素的使用技巧和注意事项,需要的朋友参考一下 要在MongoDB中访问JSON数组的内部元素,请使用点表示法。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是访问JSON数组内部元素的查询- 这将产生以下输出-

  • 我们可以使用for of循环访问数组元素: 如何修改此代码以访问当前索引?我想通过使用forEach和for-in来实现这一点。