miércoles, noviembre 10, 2010

Operaciones con números grandes - multiplicación

Para la multiplicación de dos números grandes se puede utilizar, además de los métodos disponibles en la clase BigInteger, un enfoque basado en la multiplicación de uno de los números grandes por cada uno de los dígitos del otro, y haciendo las sumas correspondientes.

A continuación se presentan dos funciones de multiplicación para números grandes. En la primera se implementa la multiplicación de un entero grande por un dígito, y en la segunda, la de dos enteros grandes utilizando el método anterior y el de la suma de enteros grandes publicado anteriormente:

public static String multiplicacion(String nA, String nB) {
        String respuesta="0";
        String ceros="";
        int posA = nA.length()-1;
        while(posA>=0) {
            respuesta=suma(respuesta,multiplicacion(nA.charAt(posA),nB)+ceros);
            ceros+="0";
            posA--;
        }
        return respuesta;
    }

    public static String multiplicacion(char digito, String nB) {
        String respuesta="";
        int digA=digito-'0';
        int posB=nB.length()-1;
        int digB;
        int resto=0;
        while(posB>=0) {
            digB = nB.charAt(posB)-'0';
            int c = digA*digB+resto;
            resto=c/10;
            c = c%10;
            respuesta=c+respuesta;
            posB--;
        }
        if(resto>0) respuesta=resto+respuesta;
        return respuesta;
    }
}

1 comentario:

  1. Anónimo2:44 p.m.

    Qué eficiencia tendría este algoritmo de multiplicación?

    ResponderBorrar

Multiprocesamiento recursivo en JAVA 7

Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...