哪错了
查看原帖
哪错了
372653
yaozhijiandeyeye楼主2020/11/25 20:28
#include<bits/stdc++.h>
using namespace std;
int n,a[1001],vis[1001];
bool prime(int n)
{
	if(n<=1)
	{
		return 0;
	}
	if(n==2)
	{
		return 1;
	}
	for(int i=2;i*i<=n;i++)
	{
		if(n%i==0)
		{
			return 0;
		}
	}
	return 1;
}
void print()
{
	bool flag=1;
	for(int i=1;i<n;i++)
	{
		if(!prime(a[i]+a[i+1]))
		{
			flag=0;
		}
	}
	if(!prime(a[n]+a[1]))
	{
		flag=0;
	}
	if(flag)
	{
		for(int i=1;i<=n;i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<"\n";
	}
	memset(a,0,sizeof(a));
	return;
}
void dfs(int dep)
{
	if(dep==n+1)
	{
		print();
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!vis[i])
		{
			vis[i]=1;
			a[dep]=i;
			vis[i]=0;
		}
	}
}
int main()
{
	int i=1;
	while(scanf("%d",&n)!=EOF)
	{
		memset(a,0,sizeof(a));
		memset(vis,0,sizeof(vis));
		printf("Case %d:",i);
		dfs(0);
		
		printf("\n\n");
		i++;
	}
}
2020/11/25 20:28
加载中...