¿Cuál es el mejor algoritmo para multiplicar dos números?

“Mejor” de qué manera? Si te refieres al algoritmo más eficiente para una computadora para números muy grandes, entonces es el algoritmo de Schonhage-Strassen, con complejidad de tiempo O (n log (n) log (log (n))), donde n es el número de dígitos .

El algoritmo más simple de todos es “simplemente agregue un número al otro el número de veces indicado por el otro”. Este algoritmo tiene complejidad O (N) = O (B ^ n), donde B es la base yn el número de dígitos, N el tamaño del multiplicador. Este algoritmo, por lo tanto, es poco práctico e imposiblemente lento, excepto por pequeños multiplicadores como 2 y 3.

El siguiente algoritmo más simple, y el que usarías en papel, es el método estándar de multiplicación larga que usas en la escuela. Esto tiene complejidad O (n ^ 2).

Por lo tanto, depende de lo que quieras decir con “mejor”. Si quieres multiplicar números realmente grandes muy rápido, querrás usar el primer algoritmo mencionado. Si desea multiplicar números pequeños, otros algoritmos pueden ser mejores (de hecho, en la práctica, el primer algoritmo mencionado es peor que el tercer algoritmo en esta lista cuando los números son pequeños).

Los algoritmos que son mejores también pueden cambiar con respecto a la representación de números. Por ejemplo, al implementar la aritmética del complemento a 2 en hardware, se usaría algo como el “algoritmo de multiplicación de Booth”.

Si busca eficiencia, puede consultar este resultado reciente (2007):

Algoritmo de Fürer

que es más rápido que cualquier algoritmo conocido, para números muy grandes.

Depende de quién sea el computador humano o informático ¿Puedes ser específico?