这个问题不知道为什么出来的数字不对 想请教一下该改正哪里 用c-free写的?

这个问题不知道为什么出来的数字不对  想请教一下该改正哪里  用c-free写的?

问题描述:

图片说明

 #include<stdio.h>
int main ()
{
    int i,j,s,b=0,c=0;
    printf("Input num:");
    scanf("%d",&s);
    if(s<2)
    {
        printf("Prime number is 2\n");
    }
    else if(s==2)
    {
        printf("Prime number is 3\n");
    }
    else
    {
        for(i=s+1;b==i;i++)
           for(j=2;j<i;j++)

           if(i%j==0)break;

           if(j=i)
           {
              b=i;
           }




       for(i=s-1;c==i;i--)
           for(j=2;j<i;j++)
           if(i%j==0)break;
           if(j=i)
           {
               c=i;

           }


     if((b-s)<(s-c))
     {
         printf("Prime number is %d\n",b);
     }
     else if((b-s)==(s-c))
     { 
         printf("Prime number is %d %d\n",b,c);
     }
     else
     {
         printf("Prime number is %d\n",c);
     }
    }
    return 0;
}

代码上次给你了,https://ask.csdn.net/questions/707861

这次就说说你的错误,=是赋值,==才是判断。
if(j=i)
这里明显写错了。

两个for循环写的有问题,大致改了下:(另外写for和if后面不加大括号是个陋习)

    for(i = s+1; ; i++)
    {
       for(j = 2; j < i; j++)
       {
            if(i%j == 0)
            {
                break;
            }
       }

       if(j == i)
       {
            b = i;
            printf("b=%d\n", b);
            break;
       }
    }

   for(i = s-1; i > 1 ; i--)
   {
       for(j = 2; j < i; j++)
       {
            if(i%j == 0)
            {
                break;
            }
       }

       if(j == i)
       {
           c = i;
           printf("c=%d\n", c);
           break;
       }
   }