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 <iostream> 2 #include<cstdio> 3 #include<cmath> 4 5 using namespace std; 6 7 bool prime(int num) 8 { 9 if(num==0||num==1) 10 return false; 11 else if(num==2||num==3) 12 return true; 13 else 14 { 15 for(int i=3;i<sqrt((double)num)+1;i++) 16 if(num%i==0) 17 return false; 18 } 19 return true; 20 } 21 22 int main() 23 { 24 int x,y,i,tmp,flag; 25 while(~scanf("%d%d",&x,&y)&&(x+y)) 26 { 27 flag=1; 28 for(i=x;i<=y;i++) 29 { 30 tmp=(i*i)+i+41 ; 31 if(!prime(tmp)) 32 { 33 flag=0; 34 break; 35 } 36 } 37 if(flag==1) 38 printf("OK\n"); 39 else 40 printf("Sorry\n"); 41 42 } 43 return 0; 44 }