1036选数

#include <bits/stdc++.h>

using namespace std;

int n=0,k=0,ans=0;

int a[25];

bool panduan(int x)

{

    for(int i=2;i<floor(sqrt(x));i++)

    {

        if(x%i==0)  return false;

    }

    return true;//别忘了

}

void fun(int start,int count,int sum)//功能单元为从start开始往后选一个数,count记录了选的深度,sum记录和

{

    if(count==k && panduan(sum))//递归深度限制为k

    {

        ans++;

    }

    for(int i=start;i<n;i++)

    {

        fun(i+1,count+1,sum+a[i]);

    }

}

int main()

{

    cin>>n>>k;

    for(int i=0;i<n;i++)

    {

        cin>>a[i];

    }

    fun(0,0,0);

    cout<<ans<<endl;

    return 0;

}

posted @ 2021-02-04 21:20  py佐料  阅读(45)  评论(0编辑  收藏  举报