编译前十对孪生素数求找出问题

为什么编译运行不出来我想要的结果(输出十对孪生素数)求解,本身是求出两组素数,然后相减等于二,输出前十个,可是我却编译出来空白

img

题主的代码里,第一个for()就死循环了,当然没结果了。题主的思路是,先找到第一个素数,找到后接着素数再找一个,最后将这两个素数相减等于2后计数 count++,直到 count 等于 10 ,停止循环。但代码里没按这思路写。
题主的代码修改如下,供参考:

#include <stdio.h>
int main()
{
    int number1 = 0,number2 = 0,i,j,a,b,count = 0;
    for (i = 2;count < 10;i++)  // 修改
    {
        for (j = 2,a = 0,b = 0;j < i;j++)
        {
            if (i % j == 0) break;
        }
        if (j == i)
        {
            a = i;  //a 保留第一个找到的质数
            for (j = 2;j < i + 2;j++)
            {
                if ((i+2) % j == 0) break;
            }
            if (j == i + 2)
                b = i + 2; //b 为与a相差2的质数
        }
        if (a && b) //如果a b 两数都不是0,就找到了质数对
        {
            printf("%d %d\n",a, b);
            count++;
        }
    }
    return 0;
}


#include <stdio.h>
#include <stdlib.h>
 
int prime(int x)
{
    if(x==1)
        return 0;//不是素数
    int i;
    for( i=2; i*i<=x; i++) //i*i<=n,用math.h了可以写为i<=根号x
    {
        if(x%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int i,j,k;
    for(i=2,k=0;k<=10;i++)
    {
        if(prime(i)&&prime(i+2))
        {
            k++;
            printf("%d,%d\n",i,i+2);
        }
    }
    //printf("Hello world!\n");
    return 0;
}