1

(97 ^ 23) mod 187Javaで次の計算を行うと:

double ret = (Math.pow (97, 23))% 187;

戻り値は74。の値(Math.Pow (97, 23))4.963064143419832E45;

私の問題は次のとおりです。式の値(97 ^ 23) mod 187 = 58。Windows電卓を実行してみてください。使用してみましたBigDecimalが、必要な値を取得できません。

(97 ^ 23)Windows電卓で作成すると、返される4.9630641434198319969863989680919 +45ため、はるかに正確になります。

誰かが私を助けることができれば、どうもありがとうございました!

4

3 に答える 3

0

問題を因数分解してみましたか?つまり、r = (r * 97) % 187; 23回繰り返しますか?ここにいくつかの疑似Javaがあります(構文を検証するためのコンパイラが近くにありませんが、別の言語でロジックをテストしたところ、問題ないようです):

public static abmodn(int a, int b, int n)
{
  int r = 1 % n;
  while (b-- > 0)
  {
    r = (r * a) % n;
  }
  return r;
}

abmodn(97, 23, 187)戻ります58

于 2013-06-22T23:49:02.153 に答える