2 条题解

  • 3
    @ 2025-11-3 17:16:28
    #include <stdio.h>
    
    const int N=3e5+10;
    
    int pri[N]={0};
    bool f[N]={0};
    int n,k;
    int kk=0;
    
    void isp(){
    	
    	for(int i=2;i<=n;i++){
    		if(f[i]==0){
    			pri[kk++]=i;
    		}
    		for(int j=0;j<kk;j++){
    			if(pri[j]*i>n) break;
    			f[pri[j]*i]=1;
    			if(i%pri[j]==0) break;
    		}
    	}
    }
    
    int main(){
    	scanf("%d %d",&n,&k);
    	isp();
    	if(kk+1<k){
    		printf("NO\n");
    	}else{
    		printf("YES\n");
    		printf("1 ");
    		for(int i=0;i<k-1;i++){
    			printf("%d ",pri[i]);
    		}
    		printf("\n");
    	}
    }
    
    
    
    
    

    信息

    ID
    1169
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    414
    已通过
    49
    上传者