改良版:
#include<stdio.h>
#include<math.h>
int main()
{
int x,y,num,r,m,i,n;
while(scanf("%d%d",&x,&y),x!=0||y!=0)
{
num=0;
for(n=x;n<=y;n++)
{
r=n*n+n+41;
for(i=2;i<=sqrt(r);i++)
if(r%i==0)break;
if(i<sqrt(r))
num++;
}
if(num)
printf("Sorry\n");
else
printf("OK\n");
}
return 0;
}
解析版:
#include<stdio.h>
#include<math.h>
int main()
{
int x,y,r,n,i,k,num;
double m;//m定义为整形过不去
while(scanf("%d%d",&x,&y)&&x!=0||y!=0)
{
//int r=0;
num=0;
for(n=x;n<=y;n++)
{
//num=0;
r=n*n+n+41;
m=sqrt(r);
for(i=2;i<=m;i++)
if(r%i==0)break;
if(i<m) //省掉的话结果是相反的,i<=m?
num++;
}
if(num)
printf("Sorry\n");
else
printf("OK\n");
}
return 0;
}