C++ 访问阵列时的加扰数[10000]

C++ 访问阵列时的加扰数[10000],c++,arrays,primes,largenumber,C++,Arrays,Primes,Largenumber,我在寻找第10001个质数的答案。 我已经完成了代码: int main() { long long listNumber[10001]; long position = 1, divider = 0; listNumber[0] = 2; while(listNumber[10000] == 0) { divider = 0; listNumber[position] = listNumber[position-1] + 1;

我在寻找第10001个质数的答案。 我已经完成了代码:

int main() {
    long long listNumber[10001];
    long position = 1, divider = 0;

    listNumber[0] = 2;

    while(listNumber[10000] == 0) {
        divider = 0;
        listNumber[position] = listNumber[position-1] + 1;

        while(listNumber[divider] <= sqrt(listNumber[position])) {
            if(listNumber[position] % listNumber[divider] == 0) {
                listNumber[position]++;
                divider = 0;
            } else divider++;
        }

        position++;
    }

    cout << listNumber[10000] << endl;

    return 0;
}
intmain(){
长列表编号[10001];
长位置=1,分隔器=0;
listNumber[0]=2;
而(listNumber[10000]==0){
除法器=0;
listNumber[位置]=listNumber[位置-1]+1;

而(listNumber[divider]您从不初始化数组。这意味着数组的内容将是不确定的,甚至读取该内容(就像在循环条件中一样)都会导致错误

您需要初始化阵列:

long long listNumber[10001] = {};  // Initialize all elements to zero

while(listNumber[10000]==0)
数组不是用
0
自动初始化的。我建议学习如何使用调试器。使用调试器很容易解决问题,因为你可以看到live
listNumber
是如何未初始化的,以及整个
while(listNumber[10000]==0)是如何初始化的{
循环被完全跳过。未实数化,但您实际上不需要此算法的数组,因为您只对数组中的最新条目感兴趣,一个简单的变量就足够了。您的while循环将更改为
while(位置