Augustus de Morgan (1806-1871), fue un matemático extraordinariamente productivo ,escribió un gran número de artículos y libros sobre Matemática, y Filosofía.
Se cuenta en el libro ¿Es Dios un Matemático", en el capítulo 7, Lógicos: Pensar sobre el Razonamiento, de
Mario Livio, que describe que una vez le preguntaron la edad a Augustus de Morgan y este respondio, " Tenía x años en el año x^2", en el siguiente párrafo del libro se indic que la edad era 43 años.
Teniendo en cuenta que la afirmacion la realizó en el siglo XIX, tenemos lo siguiente:
- Si estamos en el siglo XIX el año inicial y el final son 1800 y 1890.
- Las raices cuadradas de cada uno de estos años es 42,43 y 43,58
- La edad por lo tanto ha de estar entre estos dos números
- Las edades se toman en números enteros (los años son números enteros)
- El único número entero entre 42,43 y 43,58 es 43.
- La edad sería por lo tanto 43 años
- El año será 43^2=1849
- Por lo tanto en 1849 tenía 43 años
- El año de nacimiento sería 1806
Para el caso de que el año esté en el siglo XX, tenemos:
- Si estamos en el siglo XX el año inicial y el final son 1900 y 1999.
- Las raices cudradas de cada uno de estos años es 43,50 y 44,71
- La edad por lo tanto ha de estar entre estos dos números
- Las edades se toman en números enteros (los años son números enteros)
- El único número entero entre 43,50 y 44,71 es 44.
- La edad sería por lo tanto 44 años
- El año será 44^2=1936
- Por lo tanto en 1936 tenía 44 años
- El año de nacimiento sería 1892
Y en el caso de que lo diga alguién en el siglo XXI
- Si estamos en el siglo XXI el año inicial y el final son 2000 y 2099.
- Las raices cudradas de cada uno de estos años es 44,72 y 45,81
- La edad por lo tanto ha de estar entre estos dos números
- Las edades se toman en números enteros (los años son números enteros)
- El único número entero entre 44,72 y 45,81 es 45.
- La edad sería por lo tanto 45 años
- El año será 45^2=2025
- Por lo tanto en 2025 tenía 45 años
- El año de nacimiento sería 1981
He encontrado en la red soluciones usando artillería pesada, como por ejemplo programación lineal
Os dejo un código en C++ en el que puede resolver el problema para varios siglos
Teniendo en cuenta que el siglo corresponde al que se hace la afirmación.
#include <stdio.h>
#include<math.h>
#include<conio.h>
int main()
{
// declaracion de variables
int siglo; // siglo en el que quiere calcular el año
int a_menor;// año menor del siglo
int a_mayor; // año mayor del siglo
// raices de los años
float raiz_menor;
float raiz_mayor;
int winner;
// introduccion de los datos
printf("Introduce el siglo en que se hace la afirmación ");
scanf("%i", &siglo);
a_menor = (siglo - 1)*100;
a_mayor = a_menor +99;
raiz_menor = sqrt(a_menor);
raiz_mayor = sqrt(a_mayor);
printf("El siglo elegido es %i \n", siglo);
printf("El inicio del siglo es %i \n", a_menor);
printf("El fin del siglo es %i \n", a_mayor);
printf("La edad buscada está entre %.2f y %.2f \n", raiz_menor,raiz_mayor);
winner = (int)raiz_mayor;
printf("El año es %.0f y la edad es %i \n", pow(winner,2),winner);
// aqui la verdad he simplificado
// parada del programa para ver los resultados
fflush(stdin);
printf("Pulsa una tecla para terminar");
getche();
return 0;
}
El código se podía simplificar más pero he creido conveniente desarrollarlo un poco y comentarlo
El código en Python 3.0 sería:
# programa para la solucion del problema de Solucion al
problema de en el año x^2 tendre x años
# Introduce el siglo en que se hace la afirmacion
import math
siglo=int(input("Siglo en el que se hace la afirmacion
= "))
a_menor = (siglo - 1)*100
a_mayor = a_menor +99
print("El siglo elegido es %d "%(siglo))
print("El inicio del siglo es %d"%a_menor)
print("El inicio del siglo es %d"%a_mayor)
raiz_menor=math.sqrt(a_menor)
raiz_mayor=math.sqrt(a_mayor)
winner = int(raiz_mayor)
print("La edad buscada está entre %.2f y %.2f "
%(raiz_menor, raiz_mayor));
print("El año es
%.d y la edad es %d " %(winner**2, winner))