c程序新手 想问问这个问题怎么写?

图片说明

 #include<stdio.h>
int main ()
{
    int i,j,s,b,c;
    printf("Input num:");
    scanf("%d",&s);
    if(s<2)
    {
        printf("Prime number is 2");
    }
    else if(s==2)
    {
        printf("Prime number is 3");
    }
    else
    {
        while(b==i)
        {
           i=s++;
           for(j=2;j<i;j++)
           if(i%j==0)break;
           if(j=i)
               b=i;
        }
        while(c==i)
        {
           i=s--;
           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",b);
     }
     else if((b-s)==(s-c))
     { 
      printf("Prime number is %d %d",b,c);
     }
     else
     {
         printf("Prime number is %d",c);
     }
    }

     return 0;
}

你的程序的循环错了,给你修改了下

// Q707861.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include<stdio.h>
int main ()
{
    int i,j,s,b,c;
    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
    {
        i = s+1;
        while (true)
        {
            for(j=2;j<i;j++)
                if(i%j==0)break;
            if(j==i)
            {
                b=i;
                break;
            }
           i++;
        }
        i = s-1;
        while (true)
        {
            for(j=2;j<i;j++)
                if(i%j==0)break;
            if(j==i)
            {
                c=i;
                break;
            }
           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",c,b);
     }
     else
     {
         printf("Prime number is %d\n",c);
     }
    }

     return 0;
}

图片说明

找最近的可以直接以它为中点,向两边查找,素数可以单独的写一个函数判断

#include<stdio.h>
#include<math.h>
int judge(int x) {          //判断素数
    if (x < 2)
        return 0;
    for (int i = 2; i <= sqrt(x); i++)
        if (x % i == 0)
            return 0;
    return 1;
}
int main() {
    int s, left, right, flag = 0;
    int count = 0;      //记录个数
    int result[2];      //记录结果
    printf("Input num:");
    scanf("%d", &s);
    left = right = s;
    while (flag == 0) {
        if (left>0&&judge(--left)) {        //左边小于0时就不用再判断素数了
            result[count++] = left;
            flag = 1;

        }
        if (judge(++right)) {
            result[count++] = right;
            flag = 1;
        }
    }
    if (count == 1)
        printf("Prime number is %d", result[0]);
    else
        printf("Prime number are %d,%d", result[0], result[1]);
    return 0;
}