1、判断素数的第一个方法
(最直观但效率最低)

public static boolean isPrime(int n){
    if (n <= 3) {
        return n > 1;
    }
    for(int i = 2; i < n; i++){
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

2、判断素数的第二个方法
(初步优化)

public static boolean isPrime(int n) {
    if (n <= 3) {
        return n > 1;
    }
    int sqrt = (int)Math.sqrt(n);
    for (int i = 2; i <= sqrt; i++) {
        if(n % i == 0) {
            return false;
        }
    }
    return true;
}

3、判断素数的第三个方法
(最优)

public static boolean isPrime(int num) {
    if (num <= 3) {
        return num > 1;
    }
    // 不在6的倍数两侧的一定不是质数
    if (num % 6 != 1 && num % 6 != 5) {
        return false;
    }
    int sqrt = (int) Math.sqrt(num);
    for (int i = 5; i <= sqrt; i += 6) {
        if (num % i == 0 || num % (i + 2) == 0) {
            return false;
        }
    }
    return true;
}

题目描述

输入一个小于等于2000的正整数,检查该数是否为质数

输入描述

输入一个小于等于2000的正整数

输出描述

输出Y或者N

样例输入

34

样例输出

N

源代码:

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        boolean s=false;
        if (n>0&&n<2000) {
            //判断素数
            if (n==2||n==1) {
                System.out.println("Y");
            }else {
                for(int i=2;i<n;i++) {
                    if (n % i==0) {
                        s=false;
                        break;
                    }
                    else {
                        s=true;
                    }
                }
                if (s==true) {
                    System.out.println("Y");
                }
                else {
                    System.out.println("N");
                }
            }
            
        }else {
            System.out.println("您输入的数据有误!");
        }
    }
}
最后修改:2022 年 04 月 19 日
如果觉得我的文章对你有用,请随意赞赏