Cómo cuadrar un número grande

Lo primero es lo primero: puede cuadrar un número entero con una multiplicación y puede multiplicar dos números enteros con dos cuadrados, por lo tanto, no habrá un algoritmo de cuadratura rápida súper duper.

[matemáticas] a ^ 2 = (a + 1) (a-1) +1, [/ matemáticas] [matemáticas] ab = \ frac {(a + b) ^ 2- (ab) ^ 2} {2} [ /matemáticas]

Ahora, claramente, cuanto mayor es un número, más tiempo lleva calcular una operación en ese número, por lo que el truco principal (multiplicación de Karatsuba) es reducir una multiplicación grande en tres multiplicaciones más pequeñas. Escriba [math] a = a_0 + Ba_1 [/ math] donde [math] B [/ math] es una base que puede cuadrar fácilmente (es decir, una potencia de 10 o una potencia de 2) con [math] a_0 [ / math] y [math] a_1 [/ math] de aproximadamente el mismo tamaño (es decir, el mismo número de figuras, dadas o tomadas). Ahora calcular

[matemáticas] x_0 = a_0 ^ 2, x_2 = a_1 ^ 2, x_1 = (a_0 + a_1) ^ 2 – x_0 – x_2 [/ matemáticas]

y finalmente

[matemáticas] a ^ 2 = x_2 B ^ 2 + x_1 B + x_0. [/ matemáticas]

Calcula cada cuadrado de forma recursiva. Por ejemplo, supongamos que desea cuadrar [matemáticas] a = 1234 [/ matemáticas]; tomas [matemática] B = 100, a_1 = 12, a_0 = 34 [/ matemática].

Entonces [matemáticas] x_2 = 12 ^ 2 = 144, x_0 = 34 ^ 2 = (30 + 4) ^ 2 = 900 + 2 \ cdot 30 \ cdot 4 + 16 = 1156, x_1 = (12 + 34) ^ 3- 144-1156 = 46 ^ 2-1300 = (40 + 6) ^ 2-1300 = 1600 + 480 + 36-1300 = 816 [/ matemáticas]

Por lo tanto (observe que usé el cuadrado estándar de una suma para calcular los cuadrados de dos números de figura, lo que es más fácil para los humanos)

[matemáticas] 1234 ^ 2 = 144 \ cdot 10000 + 816 \ cdot 100 + 1156 = 1522756. [/ matemáticas]

Con algo de práctica, esto es factible en tu cabeza.