「Java案例」求n1-n2内的素数
案例解析
判断单个数是否为素数
编写一个程序,从控制台读取一个整数,判断这个整数是否为素数。素数是指大于1的自然数,且只能被1和它本身整除,没有其他正因数。
# 源文件保存为“PrimeNumberChecker.java”
import java.util.Scanner;public class PrimeNumberChecker {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数:");int number = scanner.nextInt();boolean flag = true;for (int n = 2; n <= Math.sqrt(number); n++) {if (number % n == 0) { //若number能被n整除,意味number数不是素数//当前数不是素数,则flag的值更改为falseflag = false;break; //跳出当前循环}}if (flag) {System.out.printf("%d是素数", number);} else {System.out.printf("%d不是素数", number);}scanner.close();}
}
运行结果
输入数字5
请输入一个整数:5
5是素数
输入数字10
请输入一个整数:10
10不是素数
代码解析:
- 输入处理:使用Scanner获取用户输入的数字
- 优化检查范围:只需检查2到√number的范围,减少不必要的计算
- 模运算判断:如果number能被任何n整除,则不是素数
- 结果输出:根据判断结果输出相应信息
找出n1到n2之间的所有素数
判断一个整数m是不是素数,只需判断在[2,m-1]之间是否存在能将m整除的整数,如果都不能被整除,那么 m 就是一个素数。进一步思考,判别m是否是素数,只需判别m能否被[2, m/2]区间的整数整除即可。
# 源文件保存为“PrimeNumberRange.java”
import java.util.Scanner;public class PrimeNumberRange {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入区间上界:");int n1 = scanner.nextInt();System.out.print("请输入区间下界:");int n2 = scanner.nextInt();int count = 0;for (int m = n1; m < n2; m++) {//设置逻辑值flag,初始化为trueboolean flag