运行结果传送门
代码
#include<bits/stdc++.h>
#define MAXN 25
using namespace std;
int n,k;
int a[MAXN];
int ans;
bool ispri(int x)
{
for(int i=2;i*i<=x;i++)
if(x%i==0)
return false;
return true;
}
void dfs(int m,int sum,int startx)
{
if(m==k)
{
if(ispri(sum))
ans++;
return ;
}
for(int i=startx;i<=n;i++)
dfs(m+1,sum+a[i],i+1);
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
dfs(1,0,1);
printf("%d\n",ans);
return 0;
}