求出键盘输入的范围内的素数
import java.util.Scanner;
/**
* 找质数
* 键盘输入要找的素数范围
*/
public class primeNumber {
public static void main(String[] args) {
//输入前范围input1
//引用Largerthan1方法
int input1 = Largerthan1("前");
//输入前范围input2
//引用Largerthan1方法
int input2 = Largerthan1("后");
//引用primenumber方法
primenumber(input1,input2);
}
//判断是否为素数/质数
public static void primenumber(int input1,int input2) {
int count = 0;
//遍历范围[input1,input2],闭区间
for (int i = input1; i < input2 + 1; i++) {
boolean flag = true; // 一开始认为当前数据是素数/
//判断当前遍历的这个数据是否是素数
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.print(i + "\t");
count++;
//设置个if将数据四个一组的输出,方便查看结果
if (count % 4 == 0)
System.out.println("\n");
}
}
}
//判断是否为整数
public static int integer(String a){
Scanner sc = new Scanner(System.in);
int input;
System.out.print("请输入"+a+"范围:");
//键盘输入,并判断输入是否为整数
while (true){
if (sc.hasNextInt()) {
input = sc.nextInt();
//本来想直接判断输入的整数是否为大于1的数,奈何能力不够没写出来,所以想到再引用一个比较方法
/* if (input <= 1) {
System.out.print("您输入的不是大于1整数,最小素数为2,请继续输入一个大于2的整数:");
sc.next();
} else {
break;
}*/
/* while (true) {
input = sc.nextInt();
if (input <= 1) {
System.out.print("您输入的不是大于1整数,最小素数为2,请继续输入一个大于2的整数:");
sc.next();
} else {
break;
}
}*/
break;
}else {
System.out.print("您输入的不是整数,请继续输入一个整数:");
sc.next();
}
}
return input;
}
//判断输入的整数是否为大于1的数
public static int Largerthan1(String s){
//输入前范围input1
//引用integer方法
int input = integer(s);
while (input <= 1) {
System.out.print("您输入的不是大于1整数,最小素数为2,请继续输入一个大于2的整数!");
input = integer(s);
}
return input;
}
}
结果展示
请输入前范围:j
您输入的不是整数,请继续输入一个整数:0
您输入的不是大于1整数,最小素数为2,请继续输入一个大于2的整数!请输入前范围:1
您输入的不是大于1整数,最小素数为2,请继续输入一个大于2的整数!请输入前范围:2
请输入后范围:5
2 3 5
进程已结束,退出代码0
请输入前范围:100
请输入后范围:200
101 103 107 109
113 127 131 137
139 149 151 157
163 167 173 179
181 191 193 197
199
进程已结束,退出代码0
若可以优化,可以私信或评论留言