AC代码
#include <bits/stdc++.h>
using namespace std;
#define ms(a,b) memset(a,b,sizeof(a))
typedef long long ll;
int n,k,ans;
int x[25];
inline int read(){
int X=0,w=0; char ch=0;
while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
return w?-X:X;
}
bool prime(int x) {
if (x==1||x==0) return false;
for (int i=2;i<=floor(sqrt(x));i++) if (x%i==0) return false;
return true;
}
void dfs(int cnt,int id,int sum) {
if (cnt==k) {
if (prime(sum)) {
++ans;
return;
}
}
for (int i=id+1;i<=n;i++) {
dfs(cnt+1,i,sum+x[i]);
}
}
int main(int argc,char* argv[]){
n=read(),k=read();
for (int i=1;i<=n;i++) x[i]=read();
sort(x+1,x+1+n);
ans=0;
dfs(0,0,0);
printf("%d
",ans);
return 0;
}