题目描述
对于表达式n^2n+41,当[x,y],范围内取整数是,比如(-39<=x<y<=50),判定该表达式的值是否都为素数。
输入:
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0是,表示输入结束,该行不做处理。
输出:
对于每个给定范围内的取值,如果表大会的值都为素数,则输出“OK”,否则输出“Sorry”,(不包括双引号),每组输出占一行。
样例输入:
0 2
0 0
样例输出:
OK
代码
import java.util.ArrayList;
import java.util.Scanner;
public class MyTest11 {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
// 多行输入
while (true) {
Scanner sc = new Scanner(System.in);
// System.out.println("请输入:");
String num = sc.nextLine();
// System.out.println("输出:"+num);
if (num.equals("0 0")){
break;
}
strings.add(num);
}
// System.out.println(strings);
// 判断质数
for (int i = 0; i < strings.size(); i++) {
String in = strings.get(i);
String[] s = in.split(" ");
int x=Integer.parseInt(s[0]);
int y=Integer.parseInt(s[1]);
boolean flag=true;
for (int j = x; j <=y; j++) {
int sum=(j*j+j+41);
System.out.println(sum);
flag = isPrimeNum(sum);
System.out.println(flag);
if (flag==false){
System.out.println("Sorry");
break;
}
}
if (flag==true){
System.out.println("OK");
}
}
}
//判断是否为素数方法
private static boolean isPrimeNum(int num){
if (num==2){
return false;
}
for (int i = 2; i <num ; i++) {
int a =num%i;
if (a==0){
return false;
}
}
return true;
}
}