思路:
利用不降原则和dfs枚举m个数的组合,判断是否是素数,用变量统计即可
#include<iostream>
using namespace std;
int n,m,a[25],sum;
bool zs(int x){
if(x<2) return 0;//小于2的都不是素数
for(int i=2;i*i<=x;i++)//枚举到x的平方根
if(x%i==0) return 0;
return 1;
}
void dfs(int k,int num,int x){
if(k>m){//选完m个数后
if(zs(num)) sum++;//判断是否为素数
return;
}
for(int i=x;i<=n;i++) dfs(k+1,num+a[i],i+1);//不降原则
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1,0,1);
cout<<sum;
return 0;
}