对于较大的值,正确代码中的运行时错误

Runtime error in correct code for large value

本文关键字:代码 运行时错误 于较大      更新时间:2023-10-16

因此,我正在编写一个c++程序,该程序将列出指定数字N以内的质数。

我想写一个具有确定性的代码,比试除法更快,更容易实现。我最近了解了埃拉托色尼的筛法,并尝试使用它。

正如预期的那样,它使用大量内存,但运行时相当快。现在,我的问题是:

  • 为什么这个程序在N=115800时给出运行时错误,即使N=115700在0.02秒和3456 KB内存使用(Ideone)中运行得很好?

显然,这不应该是内存问题,因为在Ideone FAQ中提到内存限制是256 MB,这是相当大的!我无法理解为什么运行时错误发生时,算法是正确的,没有内存问题!

是否因为char数组arr在我的代码中有太多的元素时,N=115800 ?

与问题无关的小代码纠错。您可能需要更改:

if(arr[i]==NULL)

:

if(arr[i]==0)

您希望将字符数组与0(而不是NULL)进行比较。这不是你的问题的原因。

Ideone的问题是它们将代码、输入和输出的总量限制为64kb。碰巧的是,N=115800达到了这个极限。这可以在FAQ中找到:

源代码、输入和输出的大小限制是什么?64 kB。