大佬看一下
#include<bits/stdc++.h>
using namespace std;
const int y=10007;
int a[2005],b[2005],cnt=0;
int n,k;
bool prime(int can){
if(can<=1){
return 0;
}
for(int i=2;i*i<=can;i++){
if(can%i==0){
return 0;
}
}
return 1;
}
void dfs(int cur,int jin,int sum){
if(cur==k){
if(prime(sum)==1)cnt++;
return ;
}
for(int i=jin;i<n;i++){
if(b[i]==0){
b[i]=1;
dfs(cur+1,i,sum+a[i]);
b[i]=0;
}
}
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n) ;
dfs(0,0,0);
cout<<cnt<<endl;
return 0;
}