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