gpt4 book ai didi

java - 欧拉项目解决方案 #3 (Java) : Debugging

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:18 27 4
gpt4 key购买 nike

不久前我开始了 Euler 项目的工作,并且已经完成了问题 #3 的代码。任务是找到一个大数(600851475143)的最大质因数。我已经用 Java 完成了代码,但是我遇到了调试问题。

Here's链接。

当我尝试运行它时,它返回此错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at main.main(main.java:24)

这是我的代码:

import java.util.ArrayList;
import java.util.List;

public class main {

public static void main(String[] args) {
long n = 600851475143L;
int factor = 1;
List<Integer> factors = new ArrayList<Integer>();
List<Integer> pfactors = new ArrayList<Integer>();
int position = 0;
int testn = 1;

while (factor <= n) {
if (n % factor == 0) {
factors.add(factor);
factor++;
}
else {
factor++;
}

while (position <= factors.size()) {
while (factors.get(position) >= testn) {
if (factors.get(position) % testn == 0 && testn != 1 && testn != factors.get(position)) {
position++;
}
else {
pfactors.add(factors.get(position));
position++;
}
}
}
int length = pfactors.size();
System.out.println(pfactors.get(length));
}
}
}

我不想要问题的解决方案,只想要修复错误的方法。

最佳答案

列表索引在 [0, size - 1] 范围内。所以你的 while条件应该是 position < factors.size()而不是 position <= factors.size() .否则factors.get(position)抛出 IndexOutOfBoundsException尽快position等于factors.size() .

关于java - 欧拉项目解决方案 #3 (Java) : Debugging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31101728/

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