哇,真是受不了了,#3WA,其余TLE,求助
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long LL;
int prime[50000010],is_prime[100000010];
int n,num,m,k;
void get_prime(){
num=1;
rep(i,2,n) is_prime[i]=true;//首先先把每一个数标记成素数
//memset(is_prime[i],true,sizeof(is_prime));
rep(i,2,n){
if(is_prime[i]) prime[num++]=i;//如果这个数是素数,就放进素数表
rep(j,1,num-1){
if(i*prime[j]>n) break;//如果判断某一个数时,从某个素数开始>n了,那么乘后面的素数时,一定超出了范围.
is_prime[i*prime[j]]=false;//先把满足条件的标记成合数.
if(i%prime[j]==0) break;
}
}
}
int main(){
scanf("%d%d",&n,&m);
rep(i,1,m) scanf("%d",&k);
get_prime();
rep(i,1,k){
if(i<k) cout<<prime[i]<<endl;
else cout<<prime[i];
}
return 0;
}
刚学的,新鲜热乎,快帮帮我