以下代码在编译时没有报错,但是会出现运行时错误(在push_back的时候)求改正方法与报错原因。
#include<bits/stdc++.h>
using namespace std ;
vector<int> p;
bool p2[1000007];
void prime(){
for(int i=2;i<3334;i++){
if(p2[i])continue;
bool flag=0;
for(auto &j:p){
if(i%j==0){
flag=1;
break;
}
}int sum=i;
p2[i]=flag;
if(!flag)p.push_back(i);
while(sum<=1000000){
sum+=i;
p2[sum]=1;
}
}
for(int i=1009;i<100001;i++){
if(!p2[i])p.push_back(i);
}
}
vector<bitset<20>> b;
int main(){
prime();
int t;
cin>>t;
for(int i=0;i<t;i++){
int a;
cin>>a;
b.push_back(bitset<20>(a));
}
return 0;
}