#include <stdio.h>
#include <math.h>
int n,k,num[25],ans;
bool Check(int n){
	  for(int i=2;i<=sqrt(n);i++)
		    if(n%i==0)	
			      return false;
	  return true;
}
void DFS(int dex,int sum,int nu){
	
	  if(nu==k&&Check(sum)){
			    ans++;
			    return ;
	  }
	  for(int i=dex+1;i<n;i++)
		    DFS(i,sum+num[i],nu+1);
}
int main(){
	
	  scanf("%d%d",&n,&k);
	  for(int i=0;i<n;i++)
		    scanf("%d",&num[i]);
	   ans=0;
	  DFS(-1,0,0);
	  printf("%d\n",ans);
	  return 0;
}
原文:http://www.cnblogs.com/huaixiaohai2015/p/5172018.html