gpt4 book ai didi

java - 为什么我在此素数检查中收到 ArrayIndexOutOfBoundsException?

转载 作者:行者123 更新时间:2023-12-01 19:48:06 27 4
gpt4 key购买 nike

我正在找出除 num 的最高质因数,如程序所示,数组有问题,

arr[j] = i;
j++;
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1    at primenum.main(primenum.java:13)
//to find highest prime factor
public class primenum {
public static void main(String[] args) {
double num = 600851475143.0;
int j = 1;
int arr[] = {j};

for(int i=2; i<=num/2; i++)
{
if((num%i) == 0 )
{
arr[j] = i;
j++;
}

}
// take the last item from array, coz its last big prime
System.out.println("largest prime is "+ arr[j-1]);

}
}

解决这个问题的最佳方法是什么?

我正在解决这个问题,

  • 检查因子直到 num/2,
  • 将所有内容插入数组,
  • 检查最后一个元素......

对于prime,我需要做更多的事情,但我陷入了初始阶段。

最佳答案

这一行

int arr[] = {j};

执行时创建一个仅包含j值的数组。您可能想要

int arr[] = new int[j];

更新:根据您在下面留下的答案,审判庭花费的时间太长。 Sieve of Eratosthenes是一个非常高效的经典算法,但是 Sieve of Atkin是寻找素数的最先进算法之一。

关于java - 为什么我在此素数检查中收到 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com