前提・実現したいこと
C++で入力された値より小さい素数を出力するコードを書きたいのですがエラーの解消方法が分かりません
発生している問題・エラーメッセージ
terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 1) >= this->size() (which is 1)
該当のソースコード
C++
1#include <bits/stdc++.h> 2 3using namespace std; 4 5int main() 6{ 7 int N; 8 cin >> N; 9 10 vector<int> num(N); 11 12 for(int i=0; i<N; i++){ 13 num.at(i) = i+1; 14 } 15 16 cout << "2" << endl; 17 18 vector<int> prime = {2}; 19 20 for(int i=0; i<N; i++){ 21 22 for(int j=0; j<prime.size()+1; j++){ 23 24 if(num.at(i+2) % prime.at(j) == 0){ 25 break; 26 } 27 else if(j == prime.size()+1 && num.at(i+2) % prime.at(j) != 0){ 28 prime.push_back(num.at(i+2)); 29 break; 30 } 31 } 32 33 } 34 35 for(int i=0; i<prime.size(); i++){ 36 cout << prime.at(i) <<endl; 37 } 38 39 return 0; 40}
試したこと
エラーメッセージで検索したところどうやら配列の要素数が大きくなりすぎてるようなのですがどこを直せばいいか分かりません、回答よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
デバッグ依頼は非推奨質問です。
[推奨していない質問] https://teratail.com/help/avoid-asking
開発環境が何かは知りませんが、要素数の確認などなら、デバッグ実行で変数の値を確認すれば判るでしょう。VisualStudioなら、下記のページを読んでください。
[C++ のデバッグ方法を学習する]
https://docs.microsoft.com/ja-jp/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=vs-2019