在Java中将素数从一个数组复制到另一个数组的方法

我对Java很陌生,我试图找到一种方法来复制数组中的所有素数,并将其复制到另一个数组。


为此,我实现了一个单独的方法来检查元素是否是素数,以及另一个计算该数组中素数的方法,这样我就可以确定新数组的大小。isPrime()countPrimes()


这是我有点卡住的地方:


public static int[] primesIn(int[] arr) {

    int primeHolder = countPrimes(arr);

    int[] copyArr = new int[primeHolder];

    for (int i = 0; i < arr.length; i++) {

        if (isPrime(arr[i]) == true) {

            copyArr[>Needs to start from 0<] = arr[i];

        }

    }

    return copyArr;

}


int[] arrayMan = {3,5,10,15,13};

在位置应该是,然后是每次它找到一个素数。如果我给它位置,如 在 中,然后说素数在位置,它会尝试将素数保存到 的位置上,如果原始数组中只有三个素数,则不存在,这将给出只有三个长度。copyArr0+1icopyArr[i] = arr[i]55copyArrcopyArr


有些东西告诉我一个不同的for循环,或者甚至一个额外的for循环会有所帮助,但我看不出我应该如何实现它。非常感谢您的帮助!


红颜莎娜
浏览 125回答 2
2回答

烙印99

有第二个索引变量,每当你找到一个素数时,它就会递增。无需第二个循环。int primeCount在记忆力充沛的现代,事情通常不会像这样做。如果你没有一些额外的硬性要求,你可以使用一个可调整大小的ArrayList<Integer>,以及里面的东西。(如果需要,请在末尾将其转换回int[])。在这种情况下,这也更好,因为通常您的调用将比 ArrayList 重新分配慢得多。add()countPrimes

尚方宝剑之说

仔细阅读你的话:在位置应该是,然后是每次它找到一个素数。copyArr0+1这意味着新数组中的索引不依赖于其在旧数组中的位置。创建计数器。每次将质数放入新数组中时,请将其递增 1。因此,您始终可以知道在哪里放置新数字。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java