![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7ac2f31c216ca1b069208b725c5aee61.png)
#include <stdio.h>
#include <math.h>
int n;
int prime[13]={2,3,5,7,11,13,17,19,23,29,31,37,41};
int ans[22]={0};
bool mark[22];
bool isprime(int n){
for(int i=0;i<13;i++)
if(prime[i]==n) return true;
return false;
}
void dfs(int num){
if(num>1)
if(!isprime(ans[num]+ans[num-1])) return;
if(n==num){
if(!isprime(ans[num]+ans[1])) return;
for(int i=1;i<=n;i++){
if(i!=1) printf(" ");
printf("%d",ans[i]);
}
printf("\n");
return;
}
for(int i=2;i<=n;i++){
if(!mark[i]){
mark[i]=true;
ans[num+1]=i;
dfs(num+1);
mark[i]=false;
}
}
}
int main(){
int cas=0;
while(scanf("%d",&n)!=EOF){
cas++;
for(int i=0;i<22;i++)
mark[i]=false;
printf("case %d\n",cas);
ans[1]=1;
mark[1]=true;
dfs(1);
printf("\n");
}
return 0;
}
- 定义的全局变量n会在该文件的任意位置都会修改,而如果只在主函数里定义的n,只有经过函数传参才能对n进行操作,所以不能在主函数里再定义一个n