这个问题不知道为什么出来的数字不对 想请教一下该改正哪里 用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;
}
答
两个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;
}
}