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;
}
}
Qué eficiencia tendría este algoritmo de multiplicación?
ResponderBorrar