gpt4 book ai didi

java - 大整数和 i 次方的使用

转载 作者:行者123 更新时间:2023-12-01 23:53:51 26 4
gpt4 key购买 nike

我发现多头并不能解决这个问题,因为我正在计算的数字太大了。我正在努力理解 BigInts 的概念。

假设我要执行以下方程。

int p = 11549
int n = 252817

等式如下:( number * p )^ (i 次方)%n 。

我刚刚做了多头:

long number;
long p;
long n;
long temp;
long total;

for (int i=0; i<6;i++) {
temp = numer*Math.pow(p,i);
total += temp;
}

total %= n;

但是当我使用 Math.pow 时,使用此方法的数字会变得很大,并且我需要使用 BigIntegers。我只是不明白我该怎么做。现在我得到了这个:(在我能弄清楚断电声明之前缺少%。)

long temp;
long p;
BigInteger opphoyd;
BigInteger mod;
for (int i=0;i<6;i++) {
temp = number * p;
opphoyd = BigInteger.valueOf(temp);
mod = BigInteger.valueOf(i);
mod.add(opphoyd.pow(i));
mod.add(opphoyd);
System.out.println(mod);
}

但它根本不起作用,有人能指出我正确的方向吗?

最佳答案

BigInteger 的 add 方法(以及大多数其他方法)不会修改它所调用的 BigInteger。相反,它返回一个新的 BigInteger。

所以你需要这样做:

BigInteger sum = mod.add(opphoyd);

看看javadocs ,在使用 BigInteger 时将会非常有帮助。

long temp;
long p;
BigInteger opphoyd;
BigInteger mod;
for( int i = 0; i < 6; i++ ) {
temp = number * p;
opphoyd = BigInteger.valueOf(temp);
mod = BigInteger.valueOf(i);
BigInteger sum = mod.add( opphoyd.pow(i));
sum = sum.add(opphoyd);
System.out.println( sum );
}

关于java - 大整数和 i 次方的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com