Mi reacción inicial cuando vi la pregunta: “Huh, interesante. Escribiré un script de Python lo suficientemente directo y llegaré al fondo de esto en poco tiempo. ¡Fácil!”
Y escribí lo hice. Esto es lo que:
def sumOfDigits (número):
suma = 0;
para c en número:
suma + = ord (c) – 48;
- ¿Cuál es el resto cuando [matemática] 9 ^ {101} [/ matemática] se divide por [matemática] 125 [/ matemática]?
- ¿Qué es un filtro de media aritmética?
- Teoría de números: ¿Cómo pruebo que la única solución racional para y ^ 2 = x ^ 3 + x es (0,0)?
- ¿Qué es [matemáticas] \ lim \ limits_ {n \ to \ infty} \ displaystyle \ sum \ limits_ {k = 1} ^ {n} \ left | e ^ {\ frac {2 \ pi ik} {n}} – e ^ {\ frac {2 \ pi i (k-1)} {n}} \ right | [/ math]?
- n es un número entero positivo, de modo que tanto n como n + 99 es un número cuadrado. ¿Cómo encuentro cada número n que tiene esta propiedad?
suma de retorno;
permisible_sum = 51;
para i en rango (1, 10000, 1):
cuadrado = i * i;
sum = sumOfDigits (str (cuadrado));
if (sum == permissible_sum):
imprimir (i, cuadrado, suma);
Por desgracia, no me dio nada.
Bueno, tal vez si elevo el límite superior de mi ciclo, podría llegar a un número, me preguntaba. Me pareció una idea sólida como una roca, porque de tantos números por ahí, TENÍA que ser uno cuya suma de dígitos del cuadrado sea igual a [matemáticas] 51 [/ matemáticas].
Como personalmente tengo un mejor control sobre el manejo y la administración de grandes números en Java , esto es lo que escribí:
import java.math.BigInteger;
clase pública SumOfDigitsInTheSquare {
public static void main (String [] args) {
int permissibleSum = 51, sum = -1;
Cuadrado BigInteger = BigInteger.valueOf (1L);
para (largo i = 1; i <999999999999999999L; ++ i)
{
cuadrado = BigInteger.valueOf (i * i);
sum = sumOfDigits (cuadrado);
if (suma == permisibleSum)
{
System.out.println (i + “,” + square + “,” + sum);
rotura;
}
}
}
private static int sumOfDigits (número de BigInteger)
{
int suma = 0;
char [] array = number.toString (). toCharArray ();
para (char c: array)
suma + = (c – 48);
suma de retorno;
}
}
Y puedo informar con orgullo de esto: dormí, desperté, bloqueé mi sistema, fui al gimnasio, volví, desbloqueé mi MacBook, y esto es lo que descubrí después de casi [matemáticas] 2 [/ matemáticas] horas: Todavía nada.
¡Maldición! Esa es una cosa difícil de resolver. Y la fuerza bruta rara vez es útil , eso ya lo sabía.
Pero estaba casi seguro [matemático] 100 \% [/ matemático] de que tal número no existía.
¿Por qué te rendirías, preguntas? Podrías haber ejecutado tu código un poco más y haberlo verificado.
Y estoy de acuerdo. Pero como puede ver, no soy en absoluto un matemático, sino un programador más, que carece de las habilidades matemáticas necesarias para demostrarlo (o refutarlo). En cuanto a la parte ” ejecutar el código por más tiempo “, ciertamente no tengo tanto tiempo libre.
Antes de que cerrara mis editores para ir a cenar en silencio absoluto, principalmente debido a que no podía encontrar ese número y no poder probar que no existe ese número, otro pensamiento me llamó la atención: Déjame verificar si una suma es posible que no sea y cerca de [matemáticas] 51 [/ matemáticas].
Y lo que encontré estaba lejos de ser interesante, por decir lo menos. Aquí está el script de Python modificado:
def sumOfDigits (número):
suma = 0;
para c en número:
suma + = ord (c) – 48;
suma de retorno;
permisible_sum = 51;
permissible_delta = 3;
diccionario = dict ();
para i en rango (permissible_sum – permissible_delta, permissible_sum + permissible_delta + 1, 1):
diccionario [i] = [];
para i en rango (1, 10000, 1):
cuadrado = i * i;
sum = sumOfDigits (str (cuadrado));
if (suma en el diccionario):
diccionario [suma] .append (i);
para k en el diccionario:
print (k, “:”, len (diccionario [k]));
Y el siguiente es el resultado:
48: 0
49: 163
50: 0
51: 0
52: 75
53: 0
54: 60
Lo que esto nos dice es el número de números cuya suma de dígitos de cuadrados es igual a permissible_sum
[math] \ pm [/ math] permissible_delta
(llamémoslo [math] x [/ math]).
Dado que permissible_sum
[math] = 51 [/ math] y permissible_delta
[math] = 3 [/ math], el valor de [math] x [/ math] para [math] 48 [/ math], [math] 49 [/ matemática], [matemática] 50 [/ matemática], [matemática] 51 [/ matemática], [matemática] 52 [/ matemática], [matemática] 53 [/ matemática] y [matemática] 54 [/ matemática] se enumeran, que dice que para números naturales menores que [matemática] 10000 [/ matemática], hay [matemática] 163 [/ matemática] números cuyos cuadrados tienen la suma de sus dígitos como [matemática] 49 [/ matemática]. [matemática] x = 0 [/ matemática] para [matemática] 48 [/ matemática], [matemática] 50 [/ matemática], [matemática] 51 [/ matemática] y [matemática] 53 [/ matemática].
No estoy seguro de qué hacer con esta distribución de frecuencias en torno a [matemáticas] 51 [/ matemáticas]. ¡Suspiro!
Por lo tanto, para responder a la pregunta, no existe un número natural , la suma de los dígitos cuyo cuadrado es igual a [matemática] 51 [/ matemática]. Al menos no pude encontrar uno usando la fuerza bruta.
No estoy seguro si un enfoque programático es lo que tenía en mente, pero de todos modos quería compartir mis hallazgos. Espero que haya ayudado de alguna manera.