gpt4 book ai didi

素数搜索中的 C++ 数组

转载 作者:行者123 更新时间:2023-11-28 00:19:17 25 4
gpt4 key购买 nike

所以我试图回答一个关于 Project Euler 的问题(问题是:找到 10,001 质数),并遇到了一个我不知道为什么会发生的问题。当我运行以下 C++ 代码时,

#include <iostream>
using namespace std;


int main()
{
int arr[10001]={2}, term=1, i, num=3;
while(term!=10001)
{
for(i=0; i<term; i++)
{
if(num%arr[i]==0){
break;
}
}
if(i==term){
arr[term]=num;
cout<< arr[term]<< " is prime"<< endl;
term++;
}
num++;
}
cout<< arr[term]<< endl;
}

我总是得到 cout<< arr[term]<< endl;打印出任何内容n++; (在这种情况下是下一个数字,但如果我将其更改为 n=856,那么它将打印出该数字)。我不明白为什么那个数组项会改变,因为我认为它只会在 arr[term]=num; 时改变。被执行

最佳答案

您的代码有 undefined behaviour 因为您正在访问其边界之外的数组。

当循环中断时,term 的值为 10001,这是数组 arr 的第 10002 个元素,而您的数组内存已分配仅适用于 10001 元素。

要打印数组的最后一个元素,请执行:

cout<< arr[term - 1]<< endl;

关于素数搜索中的 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392327/

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