#include <bits/stdc++.h>
using namespace std ;
int n,k ;
int ans=0 ;
int judge ;
int cnt=0 ;
const int N=25 ;
int visit[N] ;
int a[N] ;
bool isPrime(int x)
{
int t=x ;
for(int i=2;i*i<=t;i++)
{
if(t%i==0) return false ;
}
return true ;
}
int dfs(int cnt)
{
if(cnt-1==k)
{
int judge=0 ;
for(int i=0;i<n;i++)
{
if(visit[i]==1) judge+=a[i] ;
}
if(isPrime(judge)) ans++ ;
}
else
{
for(int i=0;i<n;i++)
{
if(visit[i]==0)
{
visit[i]=1 ;
dfs(cnt+1) ;
visit[i]=0 ;
}
}
}
return ans ;
}
int main()
{
scanf("%d %d",&n,&k) ;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]) ;
}
memset(visit,0,sizeof(visit)) ;
cout<<dfs(0)<<endl ;
return 0 ;
}
大佬求助 谢谢