#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;
}