蒟蒻没过
查看原帖
蒟蒻没过
330582
举直错诸枉楼主2020/7/26 20:38
#include<bits/stdc++.h>
using namespace std;
int i=0,n,prime[35],a[30];
void dfs(int x);
void euler_prime();
int main(){
	euler_prime();
	while(scanf("%d",&n)){
		i++;
		printf("Case %d:\n",i);
		dfs(1);
		printf("\n\n");
	} 
	return 0;
}
void dfs(int x){
	if(prime[a[n]+a[n-1]]==0 && prime[a[n]+a[1]]==0 && x==n+1){
		for(int i=1;i<=n;i++)
			cout<<a[i]<<' ';
		return ;
	}
	for(int i=x+1;i<=n;i++){
		if(prime[i]==0){
			a[x]=i;
			dfs(x+1);
			return ;
		}
	} 
	return ;
}
void euler_prime(){
	prime[1]=1;
	for(int i=2;i<=30;i++){
		for(int j=2;j<=i;j++){
			if(i*j>30)
				break;
			if(prime[j]==0)
				prime[i*j]=1;
		}
	}
	return ;
}

*********************************

2020/7/26 20:38
加载中...