Задать вопрос
@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";
    }
}
  • Вопрос задан
  • 126 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Судя по всему, у вас проезд по памяти - вы в первом цикле вылезли за границы массива s и повредили внутреннее состояние вектора v1, после чего он не может вести себя адекватно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы