#include<bits/stdc++.h>
using namespace std;
int p[101],n,l,a[101],ans=0;
int f[1001],mi=0;
int check_aaa(int aaaa)
{
for(int i=1;i<=mi;i++)
{
if(aaaa==f[i]) return 0;
}
return 1;
}
int check(int b)
{
if(b<=1) return 0;
for(int i=2;i<b;i++) if(b%i==0) return 0;
return 1;
}
void dfs(int s,int k)
{
if(k==l+1)
{
if(check_aaa(s)==0) return;
f[++mi]=s;
if(check(s)==1) ans++;
return;
}
for(int i=1;i<=n;i++)
{
if(p[i]==1) continue;
p[i]=1;
dfs(s+a[i],k+1);
p[i]=0;
}
}
int main()
{
cin>>n>>l;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
dfs(0,1);
cout<<ans;
return 0;
}
代码贴上