首页 > 代码库 > 素数判定

素数判定

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         else42             printf("OK\n");43              44     }45      46     return 0;47 }

 

素数判定