while(scanf("%d %d",&x,&y)!=EOF)
{
if(x==0&&y==0)
{
return 0;
}
else if(x>=-39&&x<y&&y<=50)
{
for(i=x; i<=y; i++)
{
if(p(i*i+i+41)==1)
s=0;
}
if(s==1)
printf("OK\n");
else if(s==0)
printf("Sorry\n");
}
}
return 0;}
int p(int t)
{
int k;
if(t<2)
return 1;
for(k=2; k*k<=t; k++)
{
if(t%k==0)
return 1;
}
return 0;
}
尝试改为
#include <stdio.h>
int p(int t);
int main()
{
int n, i, s, x, y;
while (scanf("%d%d", &x, &y) != EOF)
{
s=1;
if (x == 0 && y == 0)
{
return 0;
}
else if (x >= -39 && x < y && y <= 50)
{
for (i = x; i <= y; i++)
{
// printf("%d\n",(i * i + i + 41));
if (p(i * i + i + 41) == 1)
s = 0;
}
if (s == 1)
printf("OK\n");
else if (s == 0)
printf("Sorry\n");
}
}
return 0;
}
int p(int t)
{
int k;
if (t < 2)
return 1;
for (k = 2; k * k <= t; k++)
{
if (t % k == 0)
return 1;
}
return 0;
}
首先有明确的结束数据标识,即x,y都是0,你不需要用EOF来判断结束