如何使用 Java BigInteger 实现大数的幂运算

发布时间:2025-01-21 16:58:30 作者:小樊
来源:亿速云 阅读:84

在 Java 中,可以使用 BigInteger 类来实现大整数的幂运算

import java.math.BigInteger;

public class BigIntegerPower {
    public static void main(String[] args) {
        // 定义底数和指数
        BigInteger base = new BigInteger("12345678901234567890");
        BigInteger exponent = new BigInteger("98765432109876543210");

        // 计算幂
        BigInteger result = power(base, exponent);

        // 输出结果
        System.out.println("Base: " + base);
        System.out.println("Exponent: " + exponent);
        System.out.println("Result: " + result);
    }

    /**
     * 使用快速幂算法计算大整数的幂
     *
     * @param base 底数
     * @param exponent 指数
     * @return 幂的结果
     */
    public static BigInteger power(BigInteger base, BigInteger exponent) {
        if (exponent.equals(BigInteger.ZERO)) {
            return BigInteger.ONE;
        }

        if (exponent.compareTo(BigInteger.ZERO) < 0) {
            base = base.modInverse(BigInteger.ONE.shiftLeft(exponent.bitLength()));
            exponent = exponent.negate();
        }

        BigInteger result = BigInteger.ONE;
        base = base.mod(BigInteger.TEN_HUNDRED_THOUSAND_SEVEN); // 选择一个大的素数作为模数

        while (exponent.compareTo(BigInteger.ZERO) > 0) {
            if (exponent.and(BigInteger.ONE).equals(BigInteger.ONE)) {
                result = result.multiply(base).mod(BigInteger.TEN_HUNDRED_THOUSAND_SEVEN);
            }
            base = base.multiply(base).mod(BigInteger.TEN_HUNDRED_THOUSAND_SEVEN);
            exponent = exponent.shiftRight(1);
        }

        return result;
    }
}

在这个示例中,我们定义了一个名为 power 的方法,它接受两个 BigInteger 类型的参数(底数和指数),并返回它们的幂。我们使用了快速幂算法来提高计算效率。注意,为了避免溢出,我们在每次乘法操作后都对结果取模。

你可以根据需要修改底数和指数的值,然后运行这个程序来查看计算结果。

推荐阅读:
  1. 如何使用Java运算符
  2. 使用java怎么实现一个可逆加密算法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:macOS系统有哪些隐藏技巧

下一篇:Java 中 BigInteger 的效率如何

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》