• 素数的定义:
    质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数

如何判定一个数是不是素数?

  • 方法一:
    思考思路
    采用循环,使用大于1小于判定数的数去整除判定数
    代码实现
import java.util.Scanner;
public class IsPrime {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int number = scan.nextInt();
        isPrime(number);
    }
    public static void isPrime(int number) {
        int count = 0;
        for(int i = 2; i < number; i++) {
            if((number%i) == 0) {
                count++;
            }
        }
        if(count == 0) {
            System.out.println(number + "是素数");
        } else {
            System.out.println(number + "不是素数");
        }
    }
}

运行结果

用java代码表示一个数是否是质数 java求一个数是不是素数_整除


存在问题

当数字较大时,循环次数较多,比较耗时,效率较低,所以不推荐使用 -

方法二:
思考思路
采用循环,使用大于1小于判定数的二分之一的数去整除判定数,(任何一个数的最大因数都小于等于它的二分之一)
代码实现

import java.util.Scanner;
public class IsPrime {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int number = scan.nextInt();
        isPrime(number);
    }
    public static void isPrime(int number) {
        int count = 0;
        for(int i = 2; i < number/2; i++) {
            if((number%i) == 0) {
                count++;
            }
        }
        if(count == 0) {
            System.out.println(number + "是素数");
        } else {
            System.out.println(number + "不是素数");
        }
    }
}

运行结果

用java代码表示一个数是否是质数 java求一个数是不是素数_整除_02


存在问题

相对上面的代码,效率提高了不少,可以采纳,但是不是最优做法。

  • 方法三:
    思考思路
    采用循环,使用大于1小于判定数的开方的数去整除判定数
    (因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根.并且成对出现)
    代码实现
import java.util.Scanner;
import java.lang.Math;
public class IsPrime {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int number = scan.nextInt();
        isPrime(number);
    }
    public static void isPrime(int number) {
        int count = 0;
        for(int i = 2; i < Math.sqrt(number); i++) {
            if((number%i) == 0) {
                count++;
            }
        }
        if(count == 0) {
            System.out.println(number + "是素数");
        } else {
            System.out.println(number + "不是素数");
        }
    }
}

运行结果

用java代码表示一个数是否是质数 java求一个数是不是素数_整除_03


存在问题:

不好理解,但是代码效率好,推荐使用。