JAVA - Números muito grandes

Kevin04PT

Power Member
Boas,

Precisava de efetuar cálculos e comparações com um número inteiro um bocado grande:

Nº : 600851475143

Mas, ao atribuir este número tanto a uma variável do tipo int como do tipo long dá-me um erro de : " integer number too large".

Pesquisei um bocado e encontrei a solução do BigInteger, no entanto isto não é muito prático para o que quero. Pois tenho tido problemas a tentar comparar esse BigInteger com outros números, para por exemplo ciclos While. Mesmo usando o compareTo. E além do mais tenho de mudar todas as outras variáveis para o tipo BigInteger para haver compatibilidade.

Outra coisa, a qual não sei mesmo como dar a volta é eu ter um vetor do int, com vários valores guardados lá e queria poder utilizar os valores desse mesmo vetor para cálculos com o BigInteger e obviamente não tem compatibilidade. Como poderia alterar o tipo de vetor para funcionar com BigIntegers? Melhor ainda, alguém sabe de outra solução mais prática e com maior compatibilidade para resolver este problema?

Cumprimentos.
 
Podes sempre transformar os números apenas quando os comparas, ou mesmo usar valores double em vez do BigInteger
 
Mas num caso, por exemplo, como este:

Código:
while ((num > 1)) {


            if (((num % (primeNum[p])) == 0)) {
                
                num = (num / (primeNum[p]));
                System.out.println("Num: " + num);

Sendo o num o tal número grande, como poderia utilizar os valores do vetor para as contas? Ao mudar para tipo double continuo a ter o mesmo erro...
 
A solução que podes fazer, para contornar o número de bits que o Java permite para a representação de números, é tentares dividir esses números em partes, como se de uma divisão normal ocorre..

Infelizmente, não há maior representação de números (em Java) maior que BigInteger..
 
Back
Topo