gpt4 book ai didi

c# - Collat​​z 序列 - 减去错误

转载 作者:行者123 更新时间:2023-11-30 23:22:44 25 4
gpt4 key购买 nike

为正整数集定义了以下迭代序列:

n → n/2(n 为偶数)

n → 3n + 1(n 为奇数)

使用上述规则并从 13 开始,我们生成以下序列:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

可以看出这个序列(从13开始到1结束)包含10 项。尽管尚未证明(Collat​​z Problem),但认为所有起始数字都以 1 结尾。

哪个起始数(小于一百万)产生最长的链?

这是我手头问题的解决方案。

static void Main(string[] args)
{
int possCounter = 0;
int largestChain = 0;
int largestChainNum = 0;
int chainNum = 0;
for (int i = 2; i <= 999999; i++)
{
chainNum = i;
possCounter = 1;
while (chainNum != 1)
{
if (chainNum % 2 == 0)
{
chainNum = chainNum / 2;
}
else
{
chainNum = (3 * chainNum) + 1;
}
possCounter++;
Console.WriteLine(chainNum);
}
if (possCounter > largestChain)
{
largestChainNum = i;
largestChain = possCounter;
}
}
Console.WriteLine(largestChainNum);
Console.ReadLine();
}

我在 possCounter++ 之后放置了 Console.WriteLine(chainNum) 只是为了检查我的代码是否正确运行。它会正确运行,但是,在某个时候它开始运行负数。我不确定我的代码哪里出了问题。

最佳答案

这是一个整数溢出。如果您改用更大的类型(如 Long),它应该可以正常工作。

关于c# - Collat​​z 序列 - 减去错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654964/

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