Зашифрованный номер при доступе к массиву [10000] - PullRequest
0 голосов
/ 15 февраля 2019

Я искал решение вопроса, что такое 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;
}

, но вывод всегда меняется, я не знаю почему.Можете ли вы помочь мне разобраться?Спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы никогда не инициализируете массив.Это означает, что его содержимое будет неопределенным , и даже чтение этого содержимого (как вы делаете в условии цикла) приводит к неопределенному поведению .

Вам нужно инициализировать массив:

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