我发现长队不会削减它,因为我正在计算的数字是非常适合的。我正在努力应对BigInts的概念。
假设我有以下等式来执行。
int p = 11549
int n = 252817
方程式如下.. :(数字* 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);
}
但它根本不起作用,有人能指出我正确的方向吗?
答案 0 :(得分:3)
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 );
}