大值的正确代码中的运行时错误
Runtime error in correct code for large value
所以,我正在开发一个 C++ 程序,该程序将列出指定数量的素数 N。
我想编写确定性的代码,比试验除法更快且易于实现。我最近了解了埃拉托色尼筛法并尝试使用它。
正如预期的那样,它使用了大量内存,但 运行-时间非常快。现在,我的问题是:
- 为什么 this program give run-time error when N=115800 even when it runs perfectly fine 与 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:
中找到
What is the size limit for the source code, input and output?
64 kB.
所以,我正在开发一个 C++ 程序,该程序将列出指定数量的素数 N。
我想编写确定性的代码,比试验除法更快且易于实现。我最近了解了埃拉托色尼筛法并尝试使用它。
正如预期的那样,它使用了大量内存,但 运行-时间非常快。现在,我的问题是:
- 为什么 this program give run-time error when N=115800 even when it runs perfectly fine 与 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:
What is the size limit for the source code, input and output? 64 kB.