这道题应用筛法变形一下也可以解决。
for(int i=1;i<=n;i++){ if(prime[a[i]]) continue; ans++;//记录答案 for(int j=1;a[i]*j<=a[n];j++){ prime[a[i]*j]=1; for(int k=1;k<=a[n];k++){ if(prime[k]==1&&k+j*a[i]<=a[n]){ prime[k+j*a[i]]=1; } } } }