Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Quando uso os Tipos de Dados int ou long nos cálculos,o tempo de processamento é bem mas rápido que em bigDecimal. Onde está o erro? Qual a difença?

$
0
0

@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 = 4889771143613

Numero 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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>