对于表达式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
水不过自己还是耗费时间
import java.util.*;
public class Main {
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int [] num = new int[200];
int [] flag = new int[200];
for(int i = -39;i<=50;i++)
{
int j = i + 100;
num[j] = i * i + i +41;
if(num[j]<=1) flag[j] = 1;//表示这个数不是质数
else
{
int kk = (int)Math.sqrt(num[j]);
for(int k =2 ; k <= kk;k++)
{
if(num[j] % k==0)
{
flag[j] = 1;
break;
}
}
}
}
// for(int i=-39;i<=50;i++)
// System.out.println(i+" "+ (i+100)+" "+num[i+100]+" "+flag[i+100]);
// int tt = 0 ;
while(sc.hasNext())
{
int n = sc.nextInt();
int m = sc.nextInt();
if(n==0 && m==0) break;
int a = (int)Math.min(n, m);
int b = (int)Math.max(n, m);
int tt = 0;
for(int i = a;i <= b;i++)
{
//System.out.println(i+" "+flag[i+100]);
if(flag[(i+100)]==1)
{
tt = 1;
System.out.println("Sorry");
break;
}
}
if(tt == 0)
System.out.println("OK");
}
}
}