@vlad535535

Ошибка std::bad_alloc — C++?

Испытываю трудности с переходом с Python на C++
Что тут не так?
5a7f138763e3a340469419.png
#include <iostream>
#include <vector>

using namespace std;
long long k;
int ans = 0;
int s[10000000];
int n = 10000000;
vector<long long> v1;
int main() {
    for (int i=2; i*i<=n; i++) {
        if (s[i] == 0) {
            for (int j=i*2; j<=n; j+=i) {
                s[j] = 1;

            }
        }
    }
    v1.reserve(100);
    for (int i=2; i<=n; i++) {
        if(s[i] == 0) {
            v1.push_back(i);
        }
    }

    cin  >> k;
    for (int i=0; i<v1.size();i++) {
        if (k == 1 || ans > 20) break;
        while (k%i == 0) {
            ans++;
            if (ans > 20) break;
        }
    }
    if (ans == 20) {
            cout << "Yes";
    }
    else {
            cout << "No";
    }
}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Судя по всему, у вас проезд по памяти - вы в первом цикле вылезли за границы массива s и повредили внутреннее состояние вектора v1, после чего он не может вести себя адекватно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы