各位大佬看看哪里错了
查看原帖
各位大佬看看哪里错了
325650
seven7777楼主2021/2/27 17:43
#include <bits/stdc++.h> 
using namespace std;
bool check(int x)
{
	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)
			return 0;
	}
	return 1;
}
int main()
{
	int n,m,num,sum,ans,a[30]={0};
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int u=1<<n;    //u为全集
	for(int s=0;s<u;s++)  //枚举所有子集 
	{
		if(__builtin_popcount(s)==m)   //找到k元子集 
		sum=0;
		for(int i=0;i<n;i++)
		{
			if(s&(1<<i))  //第i个元素在子集s里面 
				sum+=a[i];
		}
		if(check(sum))
			ans++;
	}
	cout<<ans<<endl;
	return 0;
}
  
2021/2/27 17:43
加载中...