Collatz c++代码的问题
Problems with Collatz C++ code
我正在解决一个问题,虽然我已经解决了(经过很长一段时间),我想找出我的实现出了什么问题。我在Windows上用c++和Python编写了我的解决方案。我试着用codeskulptor为我的Python工作,它给了我一些TIMELIMITERROR。我切换到c++语言,它给了我一些奇怪的错误。我启动了我的虚拟机,以便我试图找出为什么我的c++代码失败了(我使用了Borland的BCC32)。我可以检测到Collatz序列生成的长int数,这会使我的程序崩溃。在Linux下,我得到了几乎相同的错误,尽管我可以看到在Linux下,程序可以运行并且可以很好地处理长数字(使用g++编译器)。在Linux下工作,我可以使用我为windows开发的相同的Python程序,它工作起来很简单。我想知道为什么c++在Windows和Linux上都失败了。
in Python:
def Collatz(num):
temp = []
temp.append(num)
while num> 1:
num = num%2==0 and num/2 or num*3+1
temp.append(num)
return temp
in C++:
vector<unsigned long> collatz(int num)
{
vector<unsigned long> intList;
intList.push_back(num);
while(num>1)
{
if (num%2==0) num /=2;
else num=num*3+1;
intList.push_back(num);
}
return intList;
}
这两段代码只是函数:
奇怪的是,这两个代码都可以很好地计算13或999999的序列。但是,例如c++无法计算837799的序列…也许这与矢量容器大小有关??
因为您的num
是int
,并且您在837799的Collatz系列中的元素991661525
之后获得溢出(所有操作都是用int
完成的,因此在num=num*3+1
中乘以991661525*3+1
时会溢出;)。将函数定义中的num
更改为unsigned long
vector<unsigned long> collatz(unsigned long num)
,它会工作!
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在java中解决这段代码时面临循环中的问题
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 读取最后一行代码算法 - c++ 时出现问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- Xcode 语义问题引用或以前定义的代码
- 需要以下代码的帮助,下面的代码有什么问题
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何在代码问题中解决此问题 代码强制
- C 代码问题?编译器问题?代码块
- C - 如果语句问题.代码将不会运行其他,否则
- 简单的NOOB C 输入/输出问题:代码错误
- NDK:0xdeadd00d时虚拟机中止和致命信号 11 (SIGSEGV) 的问题(代码 = 1)
- 编译问题 - 代码 C2129
- c++问题代码段
- 模板作用域问题代码无法编译
- 基本 CUDA 程序的问题.代码或编译器