一个判断素数的函数
另一个函数大体分为:
ans=ans+a[n+1];
pd(n+1,m+1);
ans=ans-a[n+1];//回溯
pd(n+1,m);//下一种方案
注意:不同组合算不同种
#include<bits/stdc++.h>
using namespace std;
long long bj=0,a[30],b[99999999],i,ans,j,k,kk;
bool ss(int s){
for(i=2;i<=s/2;i++){
if(s%i==0) return 0;
}
return 1;
}//检测是否是素数
void pd(int n,int m){
if(m==kk){
if(ss(ans)==1){
bj++;
b[bj]=ans;
return;
}
}
if(a[n+1]>0){
ans=ans+a[n+1];
pd(n+1,m+1);
}
ans=ans-a[n+1];//回溯
if(a[n+2]>0){
pd(n+1,m);//下一种方案
}
}
int main(){
cin>>k>>kk;
for(i=1;i<=k;i++){
cin>>a[i];
}
pd(0,0);
cout<<bj;
}