素数判定

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 }

 

posted @ 2014-10-27 15:57  zqxLonely  阅读(297)  评论(0编辑  收藏  举报