我的代码块运行,但是每当我输入输入时,它都会返回线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x4)。我对编码还很陌生,想知道哪里出了问题。
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int x, count = 1;
cin >> x;
vector<int> sieve;
fill(sieve.begin(), sieve.begin()+x-1, 1);
while (count <= x) {
for (int i = count+1; i <= x; i++) {
if (sieve[i-1] == 1) {
count = i;
break;
}
}
for (int i = count*count; i < x; i+=count) {
sieve[i-1] = 0;
}
}
for (int i = 0; i < x-1; i++) {
if (sieve[i] == 1) {
cout << i+1 << endl;
}
}
}
答案 0 :(得分:1)
您需要为筛子分配空间。因此,您可能需要vector<int> sieve(x)
。或者,您甚至可以执行vector<int> sieve(x, 1)
,这将为x个int分配空间并已经用1填充它们,因此以后就不需要fill
。