如何修复超过1分钟规则的Collatz序列代码
How to fix my Collatz sequence code that exceeds the 1-minute rule?
摘要
大家好。我正在尝试解决与Collatz猜想有关的 - 依行问题。
首先,问题读取如下:
为正整数集定义了以下迭代序列:
n→n/2(n是偶数) n→3n 1(n是奇数)
使用上面的规则,从13开始,我们生成以下序列:
13→40→20→10→5→16→8→4→2→1 可以看出,此序列(从13起,以1的结尾开始)包含> 10个术语。尽管尚未证明它(Collatz问题),但认为所有起始数字均以1。
结束。哪个起始数字(不到一百万)产生最长的链?
注意:一旦链条开始,允许术语超过100万。
来源:https://projecteuler.net/problem = 14
一个短脚注
最初,我的变量溢出并变得负面问题。虽然,我通过使用 in ,正如我提到的。
代码
#include <iostream>
using namespace std;
int collatz(long long n) {
if (n%2 == 0) return n/2;
return 3*n+1;
}
int main() {
unsigned long long cnt, n, maxcnt=0, num;
for(int i=1; i<1000000; i++) {
cnt=1;
n=i;
while(n != 1) {
n=collatz(n);
cnt++;
}
if(cnt>maxcnt) {
maxcnt=cnt;
num=i;
}
}
cout<<num;
return 0;
}
结果
而不是获得任何结果,它只是以无限的回路结束。
好吧,如果您的功能返回int,您并没有真正解决问题的一部分,我想这应该做
unsigned long long collatz(unsigned long long n)
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 如何修复超过1分钟规则的Collatz序列代码
- 在给定长度无限循环的情况下,在Collatz猜想中查找起始数的代码
- Collatz c++代码的问题