1.对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
2.题目要求是要判断某个数对否是素数,这里用到函数调用,用函数写出判断的方法:素数就是只能被自己跟 1 整除的数。
public static int sushu(int a) {
int l = 0;
for (int i = 1; i <= a; i++) {
if (a % i == 0) {
l++;
}
}
return l;
}
这个方法就是把每一个数都在小于等于自己的范围内循环取余,每有一个能整出,就让 l 加1。
3.在题中出现的其他几个限定条件:
if (x == 0 && y == 0) {
break;
}
if (x > y) {
x = y;
y = j;
j = x;
}
第一个是 x , y 不能同时为零,第二个是判断当输入的第一个数比第二个数大时交换位置。x < y .
4.定义一个boolean变量用来判断输出的结果的条件,初始值为 true:
boolean isOK = true;
5.调用suShu()开始判断:
for (int i = x; i <= y; i++) {
j = i * i + i + 41;
if (sushu(j) > 2) {
isOK = false;
break;
}
}
AC代码
import java.*;
import java.util.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int x, y, j = 0;
while (cin.hasNext()) {
x = cin.nextInt();
y = cin.nextInt();
if (x == 0 && y == 0) { // 当x,y全为0,结束程序
break;
}
int sum = 0;
boolean isOK = true; // 定义一个用来判断输出内容的变量
if (x > y) {
x = y;
y = j;
j = x;
}
for (int i = x; i <= y; i++) { <span style="white-space:pre"> </span>// 循环调用sushu 方法进行判断
j = i * i + i + 41; // 将条件计算
if (sushu(j) > 2) {
isOK = false; // 当方法里面的内容有两个以上是素数时isOk=false 结束循环
break;
}
}
if (isOK) {
System.out.println("OK"); // 当isOK=true时结果为输出语句
} else {
System.out.println("Sorry"); <span style="white-space:pre"> </span>// 不满足上一个条件是输出相应语句
}
}
}
public static int sushu(int a) { <span style="white-space:pre"> </span>// 写一个可以被用来调用的方法 数据类型为整型
int l = 0;
for (int i = 1; i <= a; i++) { <span style="white-space:pre"> </span>// 循环判断
if (a % i == 0) { // 在循环内a除以每一个小于或等于a的数,每一次能整除 l 加1
l++;
}
}
return l; // 返回l
}
}