欢迎访问宙启技术站
智能推送

实现Java函数以检查给定数字是否为质数

发布时间:2023-06-25 05:34:02

在数学中,质数是一种大于1且只能被1和自身整除的自然数。因此,要判断一个数字是否为质数,我们只需要判断这个数字是否大于1,然后从2开始检查到这个数字的平方根,判断是否有除自身以外的因子。

实现Java函数以检查给定数字是否为质数的伪代码如下:

public static boolean isPrime(int n){

    if (n <= 1) {  // 如果数字小于等于1,直接返回false

        return false;

    }

    for (int i = 2; i <= Math.sqrt(n); i++) {  // 判断从2到平方根之间是否存在因子

        if (n % i == 0) {

            return false;

        }

    }

    return true;

}

解释一下这段代码:

首先判断给定数字是否小于等于1,因为小于等于1的数字不是质数,直接返回false。

然后从2开始遍历到这个数字的平方根,需要判断的数字越大,所需判断的因子就越多,因此可以优化一下判断范围,只需要遍历到平方根即可。如果在这个遍历范围内存在可以整出该数字的因子,那么该数字不是质数,直接返回false。

如果遍历完了整个范围,都没有发现除自身以外的因子,那么该数字就是质数,返回true。

然后我们在main函数中调用isPrime函数,判断输入的数字是否为质数。完整代码如下:

import java.util.Scanner;

public class Main {

    public static boolean isPrime(int n){

        if (n <= 1) {  // 如果数字小于等于1,直接返回false

            return false;

        }

        for (int i = 2; i <= Math.sqrt(n); i++) {  // 判断从2到平方根之间是否存在因子

            if (n % i == 0) {

                return false;

            }

        }

        return true;

    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个整数:");

        int num = scanner.nextInt();

        if (isPrime(num)) {

            System.out.println(num + "是质数。");

        } else {

            System.out.println(num + "不是质数。");

        }

        scanner.close();

    }

}

运行程序,输入一个整数,程序会输出该数字是否为质数。如果该数字是质数,输出“X是质数。”,否则输出“X不是质数。”。