以下是使用 Java 编写的示例代码:

public class Main {

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

    public static int findLargestMersennePrime(int p) {
        int largestMersennePrime = 0;
        for (int i = 2; i <= p; i++) {
            int num = (int) Math.pow(2, i) - 1;
            if (isPrime(num)) {
                largestMersennePrime = num;
            }
        }
        return largestMersennePrime;
    }

    public static void main(String[] args) {
        int p = 31;
        int largestMersennePrime = findLargestMersennePrime(p);
        System.out.println(largestMersennePrime);
    }
}

该程序与前面的 Python 版本基本相同,使用 isPrime 函数判断一个数是否为素数,使用 findLargestMersennePrime 函数找到最大的梅森素数。程序从 p=2 开始逐个计算 2^p - 1 并判断是否为梅森素数,如果是则更新最大梅森素数的值。

请注意,在 Java 中,由于 Math.pow 函数返回的是 double 类型,我们需要将其转换为 int 类型。另外,由于梅森素数可能很大,可能需要使用 longBigInteger 来存储最大梅森素数。但在本题的限制条件下,使用 int 类型即可满足要求。

Java 实现梅森素数查找算法

原文地址: https://www.cveoy.top/t/topic/bUwR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录