我该如何检查素数?

时间:2015-05-24 06:06:32

标签: java primes

最简单的方法是什么,最好没有列表或地图? 我已经尝试将维基百科伪代码转换为实际代码,但我根本不了解新行之后的下半部分。

function is_prime(n : integer)
if n ≤ 1
    return false
else if n ≤ 3
    return true
else if n mod 2 = 0 or n mod 3 = 0
    return false

let i ← 5
while i×i ≤ n
    if n mod i = 0 or n mod (i + 2) = 0
        return false
    i ← i + 6
return true

2 个答案:

答案 0 :(得分:1)

首先,这里的函数转换为java:

public static boolean isPrime(int n) {
    if (n <= 1) {
        return false;
    } else if (n <= 3) {
        return true;
    } else if (n % 2 == 0 || n % 3 == 0) {
        return false;
    }

    int i = 5;
    while (i * i <= n) {
        if (n % i == 0 || n % (i + 2) == 0) {
            return false;
        }
        i += 6;
    }
    return true;
}

下半部分是从最低未检查数(5,因为已经检查了2的倍数,如0,1和3)到n的平方根(任何大于平方根必须乘以小于平方根的东西才能等于n),检查每个数字i以查看n是否可被i整除。

答案 1 :(得分:0)

试试这段代码

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

public static void main(String[] args) {
    System.out.println(isPrime(39));
}