当前位置: 首页 > 面试题库 >

为什么在此素数检查中得到ArrayIndexOutOfBoundsException?

慎峻
2023-03-14
问题内容

我发现最高的素数除以num,如程序所示,数组和

arr[j] = i;
j++;



线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:1
    在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,
  • 全部推入一个数组,
  • 检查最后一个元素……

首先,我需要做更多的事情,但是我仍处于起步阶段。


问题答案:

看来您正在寻找的所有除数num;其中之一将是最大的主要因素。仅两个相关事实应有助于使问题对于小数可解决:
1.如果d是除数,则也是如此num/d
2.您不需要检查任何大于的除数sqrt(num)

要跟踪除数,请使用Set对象。



 类似资料:
  • 问题内容: 注意:我知道该方法。 在下面的代码示例中,我不明白为什么在方法抛出,但不是在方法。 问题答案: 原因如下:正如中所说: 此类的迭代器和方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间以任何方式对列表进行结构修改,除非通过迭代器自己的remove或add方法,否则迭代器将抛出。 该检查是在迭代器的方法中完成的(如你在stacktrace中所看到的)。但是,next()只有在传递

  • 问题内容: 我知道Google搜索可以找到合适的答案,但是我更喜欢听您的个人(也许是技术性的)意见。 Java和C#之间在引发异常方面有所不同的主要原因是什么? 在Java中,引发异常的方法的签名必须使用“ throws”关键字,而在C#中,您不知道在编译时是否可以引发异常。 问题答案: 因为对已检查异常的响应几乎总是: 如果您确实知道如果抛出特定异常,您可以执行某些操作,那么您可以捕获该异常,然

  • 为什么比: memcmp是CPU指令还是什么?它一定很深,因为我在循环中使用获得了巨大的加速。

  • 本文向大家介绍为什么朴素贝叶斯如此朴素?相关面试题,主要包含被问及为什么朴素贝叶斯如此朴素?时的应答技巧和注意事项,需要的朋友参考一下 因为朴素贝叶斯有个重要的假设前提,也就是假设样本的所有特征之间是相互独立的,而这个在现实世界中是不真实的,因此说其很朴素

  • 为了好玩,我决定用红宝石编码伊拉托西筛子。只是为了好玩,因为我知道有一个库函数。而且,我认为它会很快。但我发现它并不是,至少在我的ruby 1.9.3中,我的上网本速度快了好几倍,甚至在c中也没有。为什么会这样呢。 库实现: 我在红宝石: 图书馆非常慢。

  • 问题内容: 我在代码的第34行上不断收到LineUnavailableException:https://www.refheap.com/21223 错误显示为。 我正在创建Sound类的多个实例(在我的refheap粘贴中实现)。似乎最初的实例没有问题。但是,当我开始使用相同的音频文件制作Sound对象的新实例时,便开始出现此错误。 知道如何解决吗? EIDT:我认为这个问题的 想法可能是我需要