根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。
PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2。
最近的素数不包含输入数本身。
【输入形式】输入一个整数
【输出形式】输出最近的素数,可能是一个,也可能是两个数
【样例输入1】Input num:911
【样例输出1】Prime number is 907
#include<stdio.h>
#include<math.h>
void main(void)
{
int a,b,c,i,t,g,k;
printf("Input num:");
scanf("%d",&a);
k=2;
g=sqrt(a);
if(a>2)
{
t=a;
while(1)
{
g=sqrt(t)+1;
for(i=2;i<=g;i++)
if(t%i==0)
break;
if(t!=a)
{
if(i>g)
{
b=t;
break;
}
}
t--;
}
t=a;
while(1)
{
g=sqrt(t)+1;
for(i=2;i<=g;i++)
if(t%i==0)
break;
if(t!=a)
{
if(i>g)
{
c=t;
break;
}
}
t++;
}
if(c-a<a-b)
printf("Prime number is %d\n",c);
else if(c-a>a-b)
printf("Prime number is %d\n",b);
else if((c-a)==(a-b))
printf("Prime number are %d,%d\n",b,c);
}
else if(a==2)
printf("Prime number is %d\n",k+1);
else if(a<2)
printf("Prime number is %d\n",k);
return 0;
}