大值

时间:2015-08-22 22:37:12

标签: c++ runtime-error

所以,我正在开发一个C ++程序,它会将素数列为指定数字 N

我想编写一个确定性的代码,比试验分区更快,易于实现。我最近了解了Eratosthenes的Sieve并尝试使用它。

正如所料,它使用了大量内存,但运行时间非常快。现在,我的问题是:

  • 为什么this program N = 115800时出现运行时错误,即使runs perfectly fine N = 115700,在0.02秒和3456 KB内存使用量(在Ideone上)?

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

是否因为 N = 115800时我的代码中的char数组arr包含的元素太多了?

1 个答案:

答案 0 :(得分:0)

与问题无关的次要代码挑剔。您可能想要更改:

if(arr[i]==NULL)

为:

if(arr[i]==0)

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

Ideone上的问题是它们将代码,输入和输出的总量限制为64kb。恰好,N=115800达到了这个限制。这可以隐藏在FAQ

  

源代码,输入和输出的大小限制是多少?   64 kB。