这道题:素数环
请dalao帮忙看一看为什么出错了
#include<bits/stdc++.h>
using namespace std;
int ans,n,sum;
int a[105];
bool b[105];
void print(){
++ans;
for(int j=1;j<n;++j){
printf("%d ",a[j]);
}
printf("%d\n",a[n]);
}
int pd(int a1,int a2){
for(int i=2;i<=sqrt(a1+a2);++i)
if((a1+a2)%i==0) return 0;
return 1;
}
void dfs(int k){
for(int i=2;i<=n;++i){
if(!b[i]&&pd(i,a[k-1])){
a[k]=i;
b[i]=1;
if(k==n&&pd(a[1],a[n]))
print();
else
dfs(k+1);
b[i]=0;
}
}
}
int main(){
while((scanf("%d",&n))!=EOF){
++sum;
printf("Case %d:\n",sum);
a[1]=1;
b[1]=1;
if(n==1){
printf("1");
printf("\n\n");
continue;
}
dfs(2);
printf("\n");
memset(b,0,sizeof(b));
}
return 0;
}