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");
    	}
    }
    
    
    
    
    
    • 1
      @ 2025-11-3 20:02:39

      #include <stdio.h> const int N=1e6+5; int a[N]; int b[N]; int n,k; int temp=0; int main() { b[0]=0; b[1]=1; a[++temp]=1; scanf("%d %d",&n,&k); for(int i=2;i<=n;i++){ int ok=0; for(int k=2;k*k<=i;k++){ if(i%k0) { ok=1; break; } } if(ok0){ a[++temp]=i; b[i]=b[i-1]+1; }else {b[i]=b[i-1];}} if(b[n]>=k){ printf("YES\n"); for(int y=1;y<=k;y++){ printf("%d ",a[y]); } }else printf("NO\n"); return 0;

      }




      • 1

      信息

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