杭电oj2012素数判定 可以运行为什么通不过

#include "stdio.h"

int main()
{
int x,y,n,j,s;
while( scanf("%d%d",&x,&y)!=EOF)
{

    if( x==0 && y==0 )
        break;
        else {
          for( n=x; n<=y; n++ )
         {
             s=n*n+n+41;
             for( j=2; j<=s/2; j++ )
          {
            if( s%j==0 )
            {
              printf("Sorry\n");
              break;
            }
          }
         }
             }
printf("OK\n");
}

}

读入两个数x,y, 判断谁是素数,不输出素数吗?判断x,y之间是否有素数?

先不管你这些代码是要实现什么效果的,通不过是什么意思?

可能还需要判断,x,y的范围。下面可以加快判断速度。

 #include "stdio.h"
int main()
{
    int x,y,n,j,s;
    while( scanf("%d%d",&x,&y)!=EOF)
    {
        if( x==0 && y==0 )
            break;
        else {
            for( n=x; n<=y; n++ )
            {
                s=n*n+n+41;
                for( j=2; j<=s/2; j++ )
                {
                    if( s%j==0 )
                    {
                        printf("Sorry\n");
                        n=y+1;  //修改,退出外层循环
                        break;
                    }
                }
            }
        }
        printf("OK\n");
    }
}

可能还需要判断,x,y的范围。下面可以加快判断速度。

 #include "stdio.h"
int main()
{
    int x,y,n,j,s;
    while( scanf("%d%d",&x,&y)!=EOF)
    {
        if( x==0 && y==0 )
            break;
        else {
            for( n=x; n<=y; n++ )
            {
                s=n*n+n+41;
                for( j=2; j<=s/2; j++ )
                {
                    if( s%j==0 )
                    {
                        printf("Sorry\n");
                        n=y+1;  //修改,退出外层循环
                        break;
                    }
                }
            }
        }
        printf("OK\n");
    }
}

简单看了一下,可能有两个问题:
1.如果一组数据中s有多个不是素数的情况,可能输出多次Sorry
2.可能每次接受数据都输出OK。(同时之前可能输出过Sorry)