素数对的程序,下面这个程序哪里错了

#include<stdio.h>
#include<math.h>
int a(int x){
int i;
if(x==1||x==0)
{return 0;}
else if(x==2){
return 1;}
else if(x>2){
for(i=0;i<=sqrt(x)+1;i++)
if(x%i==0)
return 0;
}
else {return 1;}
}
int main()
{ int j,n;
scanf("%d",&n);
for(j=0;j<=n;j++)
{if(a(j)==1&&a(j+2)==1)
{printf("%d %d",j,j+2);
}
}
return 0; }


#include <stdio.h>
#include <math.h>
int a(int x)
{
    int i;
    if (x == 1 || x == 0)
    {
        return 0;
    }
    else if (x == 2)
    {
        return 1;
    }
    else if (x > 2)
    {
        for (i = 2; i <= sqrt(x) + 1; i++)
            if (x % i == 0)
                return 0;
    }
    return 1;
}
int main()
{
    int j, n;
    scanf("%d", &n);
    for (j = 0; j <= n; j++)
    {
        if (a(j) == 1 && a(j + 2) == 1)
        {
            printf("%d %d  ", j, j + 2);
        }
    }
    return 0;
}

#include<stdio.h>
#include<math.h>
int a(int x) {
    int i;
    if (x == 1 || x == 0)
    {
        return 0;
    }
    else if (x == 2) {
        return 1;
    }
    else if (x > 2) {
        for (i = 2; i <= sqrt(x) + 1; i++)
            if (x % i == 0)
                return 0;
    }
    return 1;
}
int main()
{
    int j, n;
    scanf("%d", &n);
    for (j = 0; j <= n; j++)
    {
        if (a(j) == 1 && a(j + 2) == 1)
        {
            printf("%d %d\n", j, j + 2);
        }
    }
    return 0;
}

img


修改写注解里了,有问题请回复

#include<stdio.h>
#include<math.h>
int a(int x)
{
    int i;
    if(x<=0)//考虑到负数情况
    {
        return 0;
    }
    else if(x>=2)
    {
        for(i=2; i<=sqrt(x)+1; i++)//i从2开始循环,不然i=0时出错 ; 
            if(x%i==0)
                return 0;
    }
        return 1;
}
int main()
{
    int j,n;
    scanf("%d",&n);
    for(j=0; j<=n; j++)
    {
        if(a(j)==1&&a(j+2)==1)
        {
            printf("%d %d\n",j,j+2);
        }
    }
    return 0;
}