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

素数成数组[闭]

谭坚诚
2023-03-14

有没有可能用更优雅的方法把下面的代码写到数组中?现在,每当我找到一个新的质数时,我都会初始化我的数组,这是我不喜欢的。如果有人对如何改进这一节有想法,我将不胜感激。

public class PrimeNUmber {
    public static void main(String[] args) {

        Prime prime = new Prime();
        prime.FindPrime(10);
    }
}

class Prime {

    public void FindPrime(int n) {
        int arraySize = 0;

        for(int j = 2; j < n; j++) {
            int count = 0;

        for(int i = 1; i<= j; i++) {
                if  (j % i == 0) {
                    count++;
                }
                else {

                }

            }
            if (count <= 2) {
                System.out.println(j);

                arraySize++;
                int array[] = new int[arraySize];
                array[arraySize-1] = j;

                System.out.println(array[arraySize-1]);
            }
        }
    }
}

共有1个答案

柴飞星
2023-03-14

Java数组是静态的,这意味着您必须事先知道它们的大小,并且一旦创建了它,您就不能调整它的大小。

因为你不知道你会找到多少个质数,所以你可以不使用数组。

然而,Java有其他的数据结构将适合于此,因为它们可以动态增长。

一个例子是ArrayList。您可以在不重新初始化的情况下向其添加所需的内容。

顺便说一下,现在的代码实际上会丢失所有找到的素数,但最后一个除外。

如果不允许使用use这样的类,您可以自己实现一个链表。

它将不是一个数组,但您可以向它添加任何您想要的内容。

如果你必须使用一个简单的Java数组,并且不允许你预先设置固定的大小(比如说保留一个100位),你唯一的选择就是每次你想要添加一个数字的时候创建一个新数组,在破坏旧数组之前把所有的旧数复制过来。

这将是非常低的效率,但再次强调-这取决于您是否有任何限制您的实现。

 类似资料:
  • 到目前为止,我掌握的是这样的: > 从另一篇SO文章中,我了解到存储在较大类型中的每个字节都必须是,并带有0xFF,因为它被转换为32位数字。我猜前导的24位是用s填充的(尽管我不知道为什么它不是用零填充的......用s前导难道不会改变数字的值吗?(2)毕竟与(-14)不同。)所以的目的是只抓取最后的8位(即整个字节)。 当左移8位时,这使得当ing时,中的8位位于最高有效位置,而中的8位位于最

  • 4.13. 生成素数 这里我们要给出一个并行处理程序及之间的通信。这是一个非常大的课题,我们这里只是给出一些要点。 素数筛选是一个比较经典的问题(这里侧重于Eratosthenes素数筛选算法的并行特征)。它以全部的 自然后为筛选对象。首选从第一个素数2开始,后续数列中是已经素数倍数的数去掉。每次筛选可以得到 一个新的素数,然后将新的素数加入筛选器,继续筛选后面的自然数列(这里要参考算法的描述调整

  • 我们有一个泽西1.18 jax-rs服务,它曾经使用jersey-json包来支持JSON。我们正在尝试迁移以使用MOXy,但不会破坏我们的JSON接口。不幸的是,jersey-json将单个元素列表编组为对象,将多元素列表编组为数组。默认情况下,MOXy将所有长度的列表编组为数组。我们知道MOXy编组的方式对客户端来说更容易使用,但是我们已经有很多客户端使用我们的接口,并且开始将单个元素列表编组

  • 根据所提供的函数对每个元素进行迭代,将这些元素分成两个数组。 使用 Array.reduce() 创建两个数组的数组。 使用 Array.push() 将 fn 返回为 true 的元素添加到第一个数组,而 fn 返回 false 的元素到第二个元素。 const partition = (arr, fn) => arr.reduce( (acc, val, i, arr) => {

  • 本文向大家介绍JavaScript函数采用数字n并生成前n个素数的数组,包括了JavaScript函数采用数字n并生成前n个素数的数组的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受数字n,并返回包含前n个质数的数组。我们知道素数是只能被1整除的数,例如2、3、19、37、73等。 我们将首先编写一个检查给定数是否为质数的函数,然后运行循环以生成n个质

  • 我想从数组创建所有可能的数组可能大于或小于。输出数组中的元素不必是唯一的。 例如: 根据这个数组 给定所需大小的函数,应返回: 例2 根据这个数组 给定所需大小的函数,应返回: 用Swift怎么做?