【问题标题】:How can I check for prime numbers? [closed]如何检查素数? [关闭]
【发布时间】:2015-05-24 06:06:32
【问题描述】:

最简单的方法是什么,最好不用列表或地图? 我试过把维基百科的伪代码变成真正的代码,但我根本不明白换行后的后半部分。

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

【问题讨论】:

  • 最简单的方法是用Java重写这段代码。您不需要使用任何数据结构,只需实现它即可。

标签: java primes


【解决方案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 的平方根(大于平方的任何值)的部分root 必须乘以小于平方根的值才能等于 n),检查每个数字 i 以查看 n 是否可以被 i 整除。

【讨论】:

【解决方案2】:

试试这个代码

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));
}

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 1970-01-01
    • 2022-12-08
    • 2014-09-27
    • 2016-07-25
    • 2019-09-12
    • 1970-01-01
    • 2014-03-16
    • 2012-12-13
    相关资源
    最近更新 更多