题干:
解题报告:
AC代码1:
#include<bits/stdc++.h>
#define MAX 10000//求MAX范围内的素数 
using namespace std;  long long su[MAX],cnt;  
bool isprime[MAX];  
void prime()  
{  cnt=1;  memset(isprime,1,sizeof(isprime)); isprime[0]=isprime[1]=0;for(long long i=2;i<=MAX;i++)  {  if(isprime[i]) {su[cnt++]=i; } for(long long j=1;j<cnt&&su[j]*i<MAX;j++)  {  isprime[su[j]*i]=0;}  }  
}  
int main()  
{  prime();  int tmp=0;int x,y,flag; while(~scanf("%d %d",&x,&y) ) {if(x==0 && y == 0) break;flag = 0;for(int i = x; i<=y; i++) {tmp = i*i+i+41;if(!isprime[tmp] ) {flag = 1;break;}}flag == 1 ? printf("Sorry\n") : printf("OK\n");}return 0;  
}  AC代码2:
#include<stdio.h>
#include<math.h>
int isPrime(int x);
int main()
{int i,flag; int x,y;while(scanf("%d",&x)!=EOF){scanf("%d",&y);flag=1;if(x==0&&y==0){break;}else{for(i=x;i<=y;i++){if(isPrime(i*i+i+41)==0){flag=0;break;}}}if(flag==1){printf("OK\n");}else{printf("Sorry\n");}}return 0 ;
}
int isPrime(int x){int i,flag=1;for(i=2;i<sqrt(x);i++){	if(x%i==0){flag=0;break;}}return flag;
}