所以,我正在开发一个C ++程序,它会将素数列为指定数字 N 。
我想编写一个确定性的代码,比试验分区更快,易于实现。我最近了解了Eratosthenes的Sieve并尝试使用它。
正如所料,它使用了大量内存,但运行时间非常快。现在,我的问题是:
显然,这不应该是内存问题,因为在Ideone FAQ中提到内存限制为256 MB,这是非常巨大的!我无法理解为什么当算法正确并且没有内存问题时发生运行时错误!
是否因为 N = 115800时我的代码中的char
数组arr
包含的元素太多了?
答案 0 :(得分:0)
与问题无关的次要代码挑剔。您可能想要更改:
if(arr[i]==NULL)
为:
if(arr[i]==0)
您希望将字符数组与0
(不是NULL
)进行比较。这不是导致问题的原因。
Ideone上的问题是它们将代码,输入和输出的总量限制为64kb。恰好,N=115800
达到了这个限制。这可以隐藏在FAQ:
源代码,输入和输出的大小限制是多少? 64 kB。