我的代码
#include<bits/stdc++.h>
using namespace std;
bool judge_p(int a){
for(int i=2;i*i<=a;i++) if(a%i==0) return 0;
return 1;
}
int n,k;
long long ans;
int a[21];
void dfs(int i,int num,int s){
if(i==k){
if(judge_p(num)) ans++;
return;
}
for(int j=s;j<n;j++) dfs(i+1,num+a[i],j+1);
return;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
dfs(0,0,0);
printf("%d\n",ans);
}
测试点3数据:
输入:
8 4
21 31 19 22 44 76 105 33
输出:
13