5 elevado a 23 é 11920928955078125 (como você deve saber usando a calculadora do Windows), mas como você deve saber, esse valor requer 54 bits de precisão para ser expresso exatamente (log na base 2 de 5 ^23 vale 53,40…). O problema é que o double tem apenas 52 bits de precisão, já que o resto dos 64 bits é usado para expoente (11 bits) e sinal. http://steve.hollasch.net/cgindex/coding/ieeefloat.html
Para fazer esse cálculo (exponenciação e resto), use a classe BigInteger, que já tem isso pronto em um único método ( modPow. )
F
Fernando_Vicente
Thingol,
valeu pela ajuda.
Mas tem um probleminha, não to conseguindo atribuir um valor do tipo inteiro para a variavel BigInteger?
Obrigado.
V
ViniGodoy
BigInteger a = new BigInteger("5");
BigInteger x = a.modPow(23, new BigInteger("187"));
o vetInt[i] (BigInteger) precisa receber [b]j/b, como que faço isso ?
Obrigado.
T
thingol
O Vinigodoy já lhe deu a resposta para a conversão String -> BigInteger, acho que você deve saber como se faz int -> String. Como ele lhe disse, para que serve o Javadoc?
A
Alkamavo
for (int i = 0; i < str.length(); i++) {
for (int j = 1; j <= vetChar.length; j++) {
if (str.charAt(i) == vetChar[j]) {
vetInt[i] = Integer.parseInt(j) ; // passa uma string para int
}
}