gpt4 book ai didi

Java:寻找 Collat​​z 序列中最大的链

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:48:39 25 4
gpt4 key购买 nike

我找不到 Project Euler 问题 #14 有什么问题。我的第一步是找到算法,该算法一直有效,直到数字达到 120000 左右。代码崩溃并意识到我需要使用 BigIntegers。我转换了我的算法以满足该更改,但现在它不起作用。

我已经添加了 System.out.print(chain_length) 来帮助我解决我的代码可能出现问题的地方。

public static void main(String[] args) {
BigInteger target = new BigInteger("1000000");
BigInteger n = new BigInteger("0");

final BigInteger zero = new BigInteger("0");
final BigInteger one = new BigInteger("1");
final BigInteger two = new BigInteger("2");
final BigInteger three = new BigInteger("3");
final BigInteger ten = new BigInteger("10");

int greatest_index = 0;
int greatest_length = 0;
int chain_length = 0;

BigInteger i = new BigInteger("2");
for(i.equals(2) ; i.compareTo(target) == -1 ; i = i.add(one)) {
n = i;
chain_length = 1;
while(n.compareTo(one) == -1) {
chain_length++;
if(n.mod(ten).equals(zero) == true){//even
n = n.divide(two);
}else{//odd
n = n.multiply(three);
n = n.add(one);
}
if(n.equals(one) == true && chain_length > greatest_length){
greatest_length = chain_length;
greatest_index = i.intValue();
}
}
System.out.println(chain_length);
}
System.out.println(greatest_index);
}

最佳答案

要测试一个数字是否为偶数,您使用模 2,而不是 10。更改此行:

if(n.mod(ten).equals(zero) == true){//even

对此:

if(n.mod(two).equals(zero)) { //even

我还删除了不必要的 == true

关于Java:寻找 Collat​​z 序列中最大的链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035267/

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