pessoal será que alguem pode me ajudar a resolver esse problema:
preciso elevar um numero grande a uma potencia tambem grande, mas ja sei que nao é possivel pq o numero fica muito grande.
estou usando a variavel double, mas mesmo assim o resultado de 102224 elevado a 109 da um resultado que ultrapassa o limite maximo da variavel double.
é o seguinte será que alguem sabe como fazer pra 102224 elevado a 109 modulado a 26531 retornar 25164?
pessoal será que alguem pode me ajudar a resolver esse problema:
preciso elevar um numero grande a uma potencia tambem grande, mas ja sei que nao é possivel pq o numero fica muito grande.
estou usando a variavel double, mas mesmo assim o resultado de 102224 elevado a 109 da um resultado que ultrapassa o limite maximo da variavel double.
é o seguinte será que alguem sabe como fazer pra 102224 elevado a 109 modulado a 26531 retornar 25164?
quando faço dá esse resultado:
102224^109 mod 265136 = NaN
Para quê vc quer fazer isso ?
H
handynoturno
é um trabalho de faculdade! preciso resolver e não to conseguindo!
E
entanglement
handynoturno:
pessoal será que alguem pode me ajudar a resolver esse problema:
preciso elevar um numero grande a uma potencia tambem grande, mas ja sei que nao é possivel pq o numero fica muito grande.
estou usando a variavel double, mas mesmo assim o resultado de 102224 elevado a 109 da um resultado que ultrapassa o limite maximo da variavel double.
é o seguinte será que alguem sabe como fazer pra 102224 elevado a 109 modulado a 26531 retornar 25164?
quando faço dá esse resultado:
102224^109 mod 265136 = NaN
O Java tem isso prontinho, você só não achou o lugar certo.
É o método “modPow” da classe BigInteger.
Exemplo:
importjava.math.BigInteger;classTesteModPow{publicstaticvoidmain(String[]args){// 102224^109 mod 26531BigIntegerbi=BigInteger.valueOf(102224).modPow(BigInteger.valueOf(109),BigInteger.valueOf(26531));System.out.println(bi);// deve imprimir 25164}}
Flavio_Luiz
Também tem o BigDecimal mas acredito que o BigInteger tenha maior bits
E
entanglement
O método ingênuo de primeiro elevar à potência 109, e depois achar o módulo, é lento e pode ter problemas de memória também. O método usado por “modPow” é muito eficiente, tanto em termos de memória, quanto em termos de CPU.
B
Bruno_Laturner
Ambos tem precisão infinita.
E
entanglement
Ambos tem precisão infinita…
… limitada pela memória disponível.
Acho que alguém aqui falou sobre calcular o fatorial de 1 quatrilhão.
Foi mostrado aqui que não dá para calcular esse fatorial simplesmente multiplicando 1 x 2 x 3 … x 1 quatrilhão, porque a memória no computador simplesmente não comporta tantos zeros.
Você precisa usar uma fórmula “fechada” nesses casos.
H
handynoturno
pessoal valew adaptei o BigInteger ao meu programa e deu certo!