@GivaldoJr escreveu:
Pessoal! Bom dia! Estou criando um programinha pra calcular os divisores de um número.... O problema é que, usando long, int... ele faz em um determinado tempo... e quando converto pra bigDecimal ele não atende da mesma forma.... Vou mostrar onde ele diferencia nos dos exemplos. Alguém pode me dar uma dica onde está o erro. Ou a conversão está certa? Obrigado!
Usando Long.
long n =y;
for (long q=n; q>0; q--){if (q == y) { n =y; } else if (q % 2 == 0) { n -= 2; } else n -= 4; while (b%n==0){ q=(b/n); System.out.println("Numero encontrado:-->" + "-->B" + (b/n) + "-->N" + n + "-->q " + q ); break;
Convert bigDecimal.
BigDecimal l2 = new BigDecimal(1);
n=y;
for(BigDecimal qq = y; qq.compareTo(BigDecimal.ZERO)>0; qq = qq.subtract(l2) ){if (qq == y) { n= y; } else if (qq.remainder(n1).compareTo(BigDecimal.ZERO)==0) { //n1 ==2; n = n.subtract(n2); /// n2 == 2; } else { n = n.subtract(n4); // n4 == 4; } while ( b.remainder(n).compareTo(BigDecimal.ZERO)==0){ qq=(b.divideToIntegralValue(n)); System.out.println("Numero encontrado:-->qq" + (b.divideToIntegralValue(n)) + "-->QQQ" + qq + "-->N#" +n); break; } }
No primeiro Exemplo ele calcula esses dados em :
113715607991 * 43 = 4889771143613Numero encontrado:-->-->B43-->Y113715607991-->q 43-->
CONSTRUÍDO COM SUCESSO (tempo total: 4 minutos 53 segundos)Em bigDecimal no exemplo ele demora... Os dados antes de entrar no while são os mesmos... já verifiquei... Só que não faz no mesmo tempo... na vdd em big... não deixo nem concluir... passa dos 30 min ou mas...
Mensagens: 1
Participantes: 1