素数判定
Problem Description
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
Sample Input
0 1
0 0
Sample Output
OK
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #define N 3000 5 6 int main(){ 7 char flag[N]; 8 int i; 9 int j; 10 int a; 11 int b; 12 int mark; 13 int temp; 14 15 memset(flag,'0',N); 16 flag[0]='1'; 17 flag[1]='1'; 18 19 for(i=2;i<=sqrt(N);i++){ 20 if(flag[i]=='0'){ 21 for(j=i*i;j<N;j+=i) 22 flag[j]='1'; 23 } 24 } 25 26 while(1){ 27 mark=0; 28 scanf("%d%d",&a,&b); 29 30 if(a==0 && b==0) 31 break; 32 33 for(i=a;i<=b;i++){ 34 if(flag[i*i+i+41]!='0') 35 mark=1; 36 } 37 38 if(mark==1) 39 printf("Sorry\n"); 40 41 else 42 printf("OK\n"); 43 44 } 45 46 return 0; 47 }