请问素数环这样写为什么不对

#include
#include
int a[20]={0};
int b[20]={0};
int prime[45]={0};
int n;
void isprime()
{
int i,j;
for(i=2;i<45;i++)
{
prime[i]=i;
}
for(i=2;i<45;i++)
{
if(prime[i]!=0)
{
for(j=i*2;j<45;j+=i)
{
prime[j]=0;
}
}
}

}
void dfs(int index)
{
int i,j;
if(index>1&&a[1]!=1)
return;
for(i=3;i<=index;i++)
{
if(!prime[a[i-1]+a[i-2]])
{
return;
}
}

if(index==n+1)
{ 


    if(prime[a[1]+a[n]])
    {
        for(i=1;i<=n;i++)
            printf("%d ",a[i]);
            printf("\n");
            return;
    }


}


    for(i=1;i<=n;i++)
    {
        if(b[i]==0)
        {

            a[index]=i;
            b[i]=1;
            dfs(index+1);
            b[i]=0;
        }
    }

}
int main()
{
isprime();
int cnt=1;
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",cnt);

    if(n%2==0)
    {
        dfs(1);
    }
    cnt++;

}
return 0;

}