代码如下:
#include <bits/stdc++.h>
using namespace std;
int n,k,a[101],ans;
bool prime (int n) {
if (n<2) return false;
for (int i=2;i*i<=n;i++)
if (n%i==0) return false;
return true;
}
void dfs (int n,int sum,int k,int s) {//n个数,总和为sum;现选k,和为s
if (s>sum || k>n) return ;
if (s==sum) {
if (k==n && prime (s)) ans++;
return ;
}
for (int i=1;i+a[i]<=sum;i++)
dfs (n,sum,k+1,s+a[i]);
}
int main() {
cin>>n>>k;
for (int i=1;i<=n;i++) cin>>a[i];
dfs (n,k,0,0);
cout<<ans;
return 0;
}