Estoy tratando de entender cómo encontrar rápidamente el número de dos cuadrados que se pueden sumar para formar un número 'n'. Este es mi referencia.
He escrito una función que creo que me da respuestas correctas, pero necesito que se ejecute más rápido. Básicamente lo que hace es recorrer los posibles números por debajo de la raíz cuadrada de n, y verifica si esos dos números al cuadrado son iguales a n. Luego sumo 4 al total, ya que incluye cuando algún número es negativo (positivo al cuadrado). Si entiendes Java, aquí está mi código:
static int SquaresR2(int n) {
int sum = 0;
outer:
for(int a=0; ab) break outer;
sum+=4;
System.out.println(n+" = "+a+"^2 + "+b+"^2");
}
}
}
sum*=2;
if(Math.sqrt(n)==(int)Math.sqrt(n)) sum+=4;
return sum;
}
En Wolfram MathWorld dice que encontrar la Suma de Cuadrados k=2 se relaciona con factorizar n en $n=2^{a_{0}} p_{1}^{2_{a_{1}}} ... p_{r}^{2_{a_{r}}} q_{1}^{b_{1}} ... q_{s}^{b_{s}}$ donde los $p_{i}$s son primos de la forma 4k+3 y los $q_{i}$s son primos de la forma 4k+1. No tengo (casi) idea de lo que esto significa.
También habla sobre $B=(b_{1}+1)(b_{2}+1)...(b_{r}+1)$, de lo cual tampoco entiendo nada.
Estoy pensando que tiene algo que ver con factorizar n usando primos. Soy un estudiante de último año de secundaria que está llevando Cálculo 1.
¡Por favor, ayúdame! Gracias de antemano.