gpt4 book ai didi

c++ - 程序继续崩溃 [Project Euler #21]

转载 作者:行者123 更新时间:2023-11-30 04:04:56 26 4
gpt4 key购买 nike

我正在用 C++ 运行这个程序,以找出所有小于 10000 的友好数字的总和。是的,这是我的程序 Project Euler question 21 .我已经知道该算法不是最有效的算法,我发布这个的原因与程序的效率无关。

代码:

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int sum = 0;
int d[10000];
for (int i = 0; i <= 9999; i++)
d[i] = 0;
for (int i = 1; i <= 9999; i++)
for (int j = 1; j < i; j++)
if (i%j == 0)
d[i] += j;
for (int i = 1; i <= 9999; i++)
if (d[d[i]] == i)
sum += i;
cout << sum/2;
}

错误似乎发生在最后一个 for 循环中 - 我将其注释掉并且一切运行正常(当然,除了给出明显错误的结果 0)。我得到的错误信息是这样的

enter image description here

接着是:

----jGRASP exec: C:\Users\Sam\Documents\Project Euler\problem.exe

----jGRASP wedge2: exit code for process is -1073741819.
----jGRASP: operation complete.

现在是显而易见的问题 - 为什么会发生此错误?

最佳答案

这一行

 if ( d[d[i]] == i)

将访问 d 超出索引的有效范围,因为 d[i] 可以大于 9999。将其更改为:

 if ( d[i] <= 9999 && d[d[i]] == i)

关于c++ - 程序继续崩溃 [Project Euler #21],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com