Programación Recreativa

Transcripción

Programación Recreativa
Programacion recreativa
Ejercicios resueltos en C++ y cuentos
Luis Tomas Wayar
c 2015 Luis Tomas Wayar
Copyright WWW. RETRONET. COM . COM
Licenciado bajo Creative Commons Reconocimiento – Compartir Igual (by-sa):
Se permite el uso comercial de la obra y de las posibles obras derivadas, la distribución
de las cuales se debe hacer con una licencia igual a la que regula la obra original. Esta
licencia es una licencia libre según la Freedom Defined.
Primera edicion, Mayo 2015
Dedicatoria
Dedicado a todos aquellos que estudian, aprenden, enseñan, crean y
comparten conocimiento.
Agradecimiento
A Elisa, sin cuya compañía nada hubiera sido posible.
Índice general
Ejercicios
I
1
Primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1
Números primos
18
1.2
Primos gemelos
18
1.3
Primos de Mersenne
18
1.4
Primos de Sofia y cadenas de Cunningham
19
1.5
Conjetura de Goldbach
20
2
Divisores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1
Divisores consecutivos
24
2.2
Números amigos
24
2.3
Perfectos y binarios
25
2.4
Números deficientes, abundantes y perfectos
26
2.5
Congruentes con modulo 42
27
3
Especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1
Número de Hardy-Ramanujan
30
3.2
Números narcisistas
30
3.3
Cubos de Nicomaco
31
3.4
Numeros de Lychrel
32
3.5
Constante de Kaprekar
33
4
Misceláneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1
Suma de consecutivos
35
4.2
Cuadrados invertidos
36
4.3
Distribución uniforme de raíces digitales
36
4.4
Suma de dígitos potenciados
37
4.5
Conjetura de Collatz
37
4.6
Multiplicación etíope
38
4.7
Conjetura de Euler
39
5
Criptografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.1
Cifrado Cesar
42
5.2
Cifrado por transposición
42
5.3
Cifrado XOR
43
5.4
Cifrado Vigenere
44
5.5
Números Romanos
45
6
Secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.1
Secuencia de Hamming
48
6.2
Sucesión de Padovan
48
6.3
Primoriales
49
6.4
Primos absolutos
49
6.5
Números Harshad
49
II
Soluciones
1
Soluciones Primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.1
Numeros primos
53
1.2
Primos gemelos
54
1.3
Primos de Mersenne
54
1.4
Primos de Sofia y cadenas de Cunningham
55
1.5
Conjetura de Goldbach
56
2
Soluciones Divisores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1
Divisores consecutivos
59
2.2
Números amigos
60
2.3
Números perfectos
60
2.4
Números deficientes, abundantes y perfectos
61
2.5
Congruentes con módulo 42
62
3
Soluciones Especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1
Número de Hardy-Ramanujan
63
3.2
Números narcicistas
64
3.3
Cubos de nicomaco
64
3.4
Números de Lychrel
65
3.5
Constante de Kaprekar
65
4
Soluciones Misceláneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.1
Suma de consecutivos
67
4.2
Cuadrados invertidos
68
4.3
Distribución de raices digitals
68
4.4
Suma de digitos a la cuarta
69
4.5
Conejetura de Collatz
69
4.6
Multiplicación Etíope
70
4.7
Conjetura de Euler
71
5
Soluciones criptográfia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.1
Cifrado Cesar
73
5.2
Cifrado por transposición
74
5.3
Cifrado XOR
74
5.4
Cifrado Vigenere
75
5.5
Números romanos
76
6
Soluciones secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.1
Secuencia de Hamming
77
6.2
Sucesión Padovan
78
6.3
Primoriales
78
6.4
Primos absolutos
79
6.5
Números de Harshad
80
III
Cuentos
1
El amor de una mujer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2
La Mujer del Panadero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3
Emanuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4
Kroshnak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5
Yo, mi asesino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6
La mentira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9
Prologo
Programación Recreativa es una obra que con originalidad combina problemas y
cuentos; en esta combinación se ve la mano del autor que nos propone la elaboración
de un tejido particular entre dos componentes. Por un lado los ejercicios, ejemplos
y aplicaciones acerca de números primos, divisores, números especiales, secuencias,
criptografía y problemas misceláneos; agrupados como Parte I problemas. Esta parte
del libro da cuenta de elementos e ideas provenientes de un mundo abstracto corporizadas en esos problemas y constituyen productos de la compleja y no siempre evidente
belleza de las relaciones en la aritmética de números enteros, relaciones estas, que
estructuran el edificio de la matemática. Es importante destacar que estos ejercicios no
sólo son mostrados como curiosidad matemática, sino que también tienen un aterrizaje
en las Ciencias de la Computación a través de la expresión en programas en lenguaje
C++. El tejido que muestra el libro se enlaza, por otro lado, en la parte 2 “Cuentos”
constituida por dos narraciones, de muy buena factura, que nos relatan situaciones
cotidianas aparentemente alejadas de un razonamiento abstracto. Lo interesante de
la visión del autor es que en la ingeniosa trama que elabora establece un hilo de
Adriadna que puede recorrer el laberinto formado por este aparente alejamiento entre
las dos partes del libro; que vinculan el razonamiento abstracto de la aritmética de
los números enteros con un mundo cotidiano, no siempre satisfactorio, que sabemos
incompleto. Y es ese hilo el que nos ayuda y nos hace desencriptar el mensaje del
texto y que es el descubrimiento de Gödel que encuentra incompletud también en la
formidable y armónica construcción de la aritmética de números enteros. Entonces
si bien conocemos que en nuestro mundo humano no siempre la verdad se cumple o
se demuestra; veamos también que en algo tan perfecto como ciertos aspectos de la
matemática podemos encontrar incompletud.
Es de notar la cercanía entre la literatura y la informática; en el sentido de que un
producto informático también es un relato", escrito en un lenguaje con su sintaxis y
gramática particular, que dice algo respecto a una historia real o ficticia (virtual); muy
parecida a una novela o a un cuento o en general un producto literario.
Ing. José Humberto Paganini
10
Convenciones y estructura del libro
El presente libro esta escrito y organizado de manera que cada uno de los ejercicios
planteados sea independiente y no requiera un cierto orden para ser leído, sin embargo
se agruparon por temas para su mejor organizacion y existe referencias cruzadas entre
ellos.
Cada ejercicio consta de un tíulo, una introducción y fundamentación, en algunos
casos con ejemplos y luego el planteo del problema y la solución propuesta, cabe destacar que la solución propuesta por el autor obviamente no es única y posiblemente en
algunos casos sea perfectible, se agradecerá al lector cualquier sugerencia y corrección
que pueda aportar para próximas posibles ediciones.
La respuesta propuesta en todos los casos esta desarrollada en el lenguaje de
programación C++. Para mayor comprensión y enriquecimiento de la lectura el texto
esta complementado con notas al margen que profundizan en algunos aspectos o
detallas cuestiones inherentes a la introducción. También se incluyen notas al pie para
abundar en datos sobre las personalidades y bibliografía mencionada.
En un segundo capitulo del libro se incluyen cuentos relacionados con la temática
del libro algunos de ellos enriquecidos con ilustraciones, tanto los textos como las
ilustraciones son del mismo autor
11
Introducción
Cuando era niño, antes de ir a la cama me gustaba visitar la basta biblioteca de mi
padre, un poco aburrido de la ciencia ficción, genero que siempre me fascino, comense
a explorar otras áreas de la biblioteca, encontré así, un sector donde habían libros
dedicados a la matemática, entre ellos unos con problemas lógicos y matemáticos, El
Mula de Nusradin, El hombre que Calculaba, Matemáticas e Imaginación, entre otros y
autores como Martin Gardner. Me apasiono el genero, eran problemas exquisitamente
presentados.
Siendo aun un niño intente crear mis propios desafíos que se los presentaba a
familiares y amigos, debo reconocer que sin mucho éxito. Este libro es un primer
intento en revertir esa situación.
Luego, en mi carrera docente intentaba motivar a los alumnos a encarar el aprendizaje como una tarea recreativa, entretenida y apasionante, me complacía ver que
en algunos de ellos se despertaba el placer por adquirir conocimientos y destrezas
divirtiéndose. En realidad el descubrir que aprender es una tarea placentera y divertida.
Como aficionado a la matemática tengo una colección de libros sobre el tema,
de cada nueva lectura surgía siempre algún problema que luego era publicado en mi
blog personal o mis cuentas en redes sociales, luego de un tiempo pensé en hacer una
recopilación de algunos de los problemas y crear un libro con ellos. Este compendio
es el resultado, espero que sea de su agrado y les de algunas horas de diversión.
Se trata de problemas lógico-matemáticos a los que se propone abordar desde la
practica de la programación. En todos los casos se ofrece el código fuente en C++ de
una solución que da respuesta al desafío.
El objetivo de este libro no es académico sino de esparcimiento y recreación mental,
sin embargo espero que sirva para el desarrollo de habilidades y mejor comprensión y
dominio de la programación, puede servir como apoyo y soporte a docentes tanto del
área de matemáticas como de computación.
Apunta a atrapar al lector en base a el desafío y reto mental que representa cada uno
de sus problemas, también a introducirlo en algunas de las cuestiones mas interesantes
y curiosas de la matemática.
También incluí en cuatro cuentos inéditos con ilustraciones, la idea es que estos
cuentos sean un descanso entre problema y problema, se tratan de historias que tienen
como tematica subyacente algunas de las cuestiones tratadas en el libro.
Este libro surge como un intento de compensación por mi imposibilidad de concurrir a cumplir con mi obligación laboral por problemas de salud, razón por la cual
todos los derechos y regalías son donados a la UNJU - Universidad Nacional de Jujuy
- Facultad de Ingeniería.
Espero que les guste el trabajo y los disfruten tanto como yo disfrute hacerlo.
I
Ejercicios
1
Primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1
1.2
1.3
1.4
1.5
Números primos
Primos gemelos
Primos de Mersenne
Primos de Sofia y cadenas de Cunningham
Conjetura de Goldbach
2
Divisores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1
2.2
2.3
2.4
2.5
Divisores consecutivos
Números amigos
Perfectos y binarios
Números deficientes, abundantes y perfectos
Congruentes con modulo 42
3
Especiales . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1
3.2
3.3
3.4
3.5
Número de Hardy-Ramanujan
Números narcisistas
Cubos de Nicomaco
Numeros de Lychrel
Constante de Kaprekar
4
Misceláneas . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Suma de consecutivos
Cuadrados invertidos
Distribución uniforme de raíces digitales
Suma de dígitos potenciados
Conjetura de Collatz
Multiplicación etíope
Conjetura de Euler
5
Criptografía . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.1
5.2
5.3
5.4
5.5
Cifrado Cesar
Cifrado por transposición
Cifrado XOR
Cifrado Vigenere
Números Romanos
6
Secuencias . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.1
6.2
6.3
6.4
6.5
Secuencia de Hamming
Sucesión de Padovan
Primoriales
Primos absolutos
Números Harshad
15
“Me dijo que hacia 1886 había discurrido un sistema original de numeración y
que en muy pocos días había rebasado el veinticuatro mil. No lo había escrito,
porque lo pensado una sola vez ya no podía borrársele. Su primer estímulo,
creo, fue el desagrado de que los treinta y tres orientales requieran dos signos
y tres palabras, en lugar de una sola palabra y un solo signo. Aplicó luego ese
disparatado principio a los otros números. En lugar de siete mil trece, decía
(por ejemplo) Máximo Pérez; en lugar de siete mil catorce, El Ferrocarril; otros
números eran Luis Meleán Lafinur, Olimar, azufre, los bastos, la ballena, el gas,
la caldera, Napoleón, Agustín de Vedia. En lugar de quinientos, decía nueve.
Cada palabra tenía un signo particular, una especie de marca; las últimas eran
muy complicadas. . . Yo traté de explicarle que esa rapsodia de voces inconexas
era precisamente lo contrario de un sistema de numeración. Le dije que decir
365 era decir tres centenas, seis decenas, cinco unidades: análisis que no existe
en los “números” El Negro Timoteo o manta de carne. Funes no entendió o no
quiso entenderme.”
Jorge Luis Borges - El culteranismo
La inteligencia humana apenas vislumbra en la oscuridad la inmensidad de relaciones, características, reglas y aplicaciones que los números tienen. Desde tiempos
inmemoriales, cuando alguno de nuestros ancestros se sentó por primera vez a observar
se percato que una de las características de los objetos era la cantidad, el mundo de la
matemática y los números fue adquiriendo cada vez mas importancia y ayudándonos a
comprender como funciona el universo, los números son los símbolos y la matemática
el lenguaje con que esta escrito el software que mueve este universo.
En todo lo relacionado a la computación se necesita de la matemática, debajo de
cualquier programa que se ejecute en una computadora, desde un juego hasta los mas
complejos sistemas de simulación o redes neuronales existe un intrincados mundo
de números y cálculos subyacente que lo hace posible. Sin temor a equivocarnos
podemos afirmar que la relación entre la matemática y la programación se produjo
desde antes de la construcción de la primera computadora.
Las ciencias de la computación se interrelacionan con otras áreas de la ciencia y la
investigación, incluso me atrevería a decir que actualmente esta inmersa e involucrada
directa o indirectamente con la mayoría de los campos de la investigación y la ciencia.
Pero es con las matemáticas con las que se considera que tiene un grado mayor
de relación, los primeros trabajos en el área fueran fuertemente influenciados por
matemáticos como Kurt Gödel 1 y Alan Turing2 . En la actualidad es creciente el
intercambio de ideas entre ambos campos en áreas como la lógica matemática, la
teoría de categorías, la teoría de dominios, el álgebra y la geometría.
En este libro vamos a explorar y resolver algunos problemas relacionados con la
matemática y los números en general, los enunciados están agrupados por categorías
tales como números primo o divisores, en muchos casos se trata de problemas simples
que podríamos resolver fácilmente con lápiz y papel, pero el desafío se trata de lograr
adaptar la lógica y la mecánica de la resolución manual a términos de programación
y algoritmia. Son en todos los casos ejercicios y divertimentos mentales que espero
resulten de su agrado.
1 Kurt Gödel (28 de abril de 1906 Brünn – 14 de enero de 1978, Princeton, Estados Unidos) fue un
lógico, matemático y filósofo austriaco-estadounidense reconocido como uno de los más importantes
lógicos de todos los tiempos, el trabajo de Gödel ha tenido un impacto inmenso en el pensamiento
científico y filosófico del siglo XX.
2 Alan Mathison Turing, (Londres, 23 de junio de 1912 - Wilmslow, Cheshire, 7 de junio de 1954),
fue un matemático, lógico, científico de la computación, criptógrafo y filósofo británico.
1. Primos
“Si las matemáticas (sistema especializado de pocos signos, fundado y gobernado
con asiduidad por la inteligencia) entrañan incomprensibilidades y son objeto
permanente de discusión, ¿cuántas no oscurecerán el idioma, colecticio tropel
de miles de símbolos, manejado casi al azar?”
Jorge Luis Borges - El culteranismo
Desde hace unos miles de años los números primos han atrapado la atención
de la humanidad especialmente de matemáticos y filósofos. Una de las principales
razones es la fascinación que produce su irregular distribución a lo largo de la recta
numérica. Los números primos aparecen esparcidos hasta ahora sin orden aparente,
encontrándose algunos agrupados y abundantes y otros muy espaciados y escasos. Son
un desafío para el intelecto humano ya que parecen escapar a todo intento de deducir
y establecer leyes sobre ellos pues no parece existir ninguna regla que determine su
ubicación entre los demás números naturales.
La computación como ciencia ha ayudado en mucho a la comprensión de los
números primos y a su búsqueda, y se ha valido de ellos para lograr entre otras cosas
y como ya dije anteriormente comunicaciones y almacenamiento de información mas
seguros.
Como dice Don Zagier, sorprenden tanto la evidente falta de orden y reglas que
rijan a los números primos, pero también se intuye que algo aun escapa al entendimiento humano, personalmente creo que posiblemente aun no podamos vislumbrar
estas reglas, pero que si existen.
Lo que inicialmente fue una curiosidad con el devenir de los años y la evolución
de las comunicaciones y la tecnología se convirtió en la piedra angular de la seguridad
informática. Los números primos hoy son imprescindibles para garantizar cierto
grado aceptable de fortaleza en los sistemas de codificación de la información y las
comunicaciones. Existen muchos y muy variados proyectos de investigación que
buscan desde métodos para determinar la primalidad de un numero hasta la búsqueda
de nuevos y mas grandes números primos.
En esta sección del libro nos enfrentaremos con los primos, alguno de los problemas planteados esta basados y famosos y conocidos problemas como la Conjetura de
Goldbach.
Capítulo 1. Primos
18
1.1.
Números primos
Un número primo es un número natural, que tiene exactamente dos divisores
positivos la unidad y el mismo. También podemos definirlo como aquel número entero
positivo que no puede expresarse como producto de dos números enteros positivos
más pequeños que él, o bien, como producto de dos enteros positivos de más de una
forma.
Existen varios métodos para buscar los números primos en un intervalo dado, uno
de ellos es la Criba de Eratostenes.
Ejercicio: Generar números primos
El numero 1 no
es considerado
un numero primo, por lo tanto queda excluido.
En contraposición a primo un
numero compuesto es aquel que
tiene mas de dos
divisores positivos.
El algoritmo más sencillo que puede utilizarse para saber si un número n
es primo es el de la división. Se trata de ir probando para ver si tiene algún
divisor propio. Para ello vamos dividiendo el número n entre 2, 3, 4, 5, ... ,
√
n − 1. Si alguna de las divisiones es exacta (da resto cero) podemos asegurar
que el número n es compuesto. Si ninguna de estas divisiones es exacta, el
número n es primo.
Este método puede hacerse más eficiente observando simplemente, que si
es un número compuesto. Por lo tanto, el número de divisiones a realizar es
√
mucho menor. Sólo hay que dividir entre 2, 3, 4, 5, ... , [ n]
Escriba un programa que reciba como entrada un numero entero positivo
y como salida diga si es o no un número primo, use para ello el algoritmo
descripto anteriormente.
Solucion en pagina 53
1.2.
A partir del par
(5, 7), el número intermedio
es siempre múltiplo de 6.
Primos gemelos
En matemáticas, y más concretamente en teoría de números, dos números primos
(p, q) son números primos gemelos si están separados por una distancia de 2, es decir,
si q = p + 2
La conjetura de los primos gemelos postula la existencia de infinitos pares de
primos gemelos. Por ejemplo tenemos el primer par de primos gemelos que son 3 y 5,
como puede observase ambos son impares y están separados por un solo numero, en
este caso el 4 que obviamente es par.
Ejercicio: Primos gemelos
En el libro Recreations in the Theory of Numbers", de A. H. Beiler dice que
si obtenemos un numero n de aplicar la formula n = 30 ∗ (2 ∗ x − 27) ∗ (x −
15) para valores de x en el rango de 1 a 20, obtenemos pares de números
primos gemelos en n-1 y n+1 para todos los valores de x a excepción de
dos. Escribir un programa que encuentre y muestre por pantalla valores de x
que no generan pares de números primos gemelos y así refute la afirmación.
Solución en página 54
1.3.
Primos de Mersenne
Vamos a comenzar definiendo lo que es un número de Mersenne (M) se dice que
un numero es un numero de Mersenne si es una unidad menor que una potencia de 2.
Mn = 2n − 1
1.4 Primos de Sofia y cadenas de Cunningham
19
Por otra parte, un número primo de Mersenne es un número de Mersenne que es
primo, es decir:
Mn = 2n − 1
Con n primo
No es condicion suficiente que n sea primo para que M n lo sea.
Reciben ese nombre en honor al filósofo del siglo XVII Marin Mersenne 1 quien
en su “Cognitata Physico-Mathematica” realizó una serie de postulados sobre ellos
que sólo pudo refinarse tres siglos después.
También compiló una lista de números primos de Mersenne con exponentes
menores o iguales a 257, y conjeturó que eran los únicos números primos de esa
forma. Su lista sólo resultó ser parcialmente correcta, ya que por error incluyó M67
y M257, que son compuestos, y omitió M61, M89, y M107, que son primos; y su
conjetura se revelaría falsa con el descubrimiento de números primos de Mersenne
más grandes. No proporcionó ninguna indicación de cómo dio con esa lista, y su
verificación rigurosa sólo se completó más de dos siglos después.
Actualmente se conocen 48 primos de Mersenne, los últimos 14 encontrados,
han sido descubiertos por GIMPS (Great Internet Mersenne Prime Search) que se
constituyó en 1996 para descubrir nuevos primos de Mersenne. Es un proyecto que
combina los esfuerzos de docenas de expertos y miles de amateurs, y la potencia de
miles de computadoras personales.
Ejercicio: Primos de Mersene
Escribir un programa que encuentre e imprima por pantalla el primer numero que generado con la formula de Mersenne que no es un numero primo.
Solución en página 54
1.4.
Primos de Sofia y cadenas de Cunningham
Un número primo p es un numero primo de Sophie si 2p+1 también es un número
primo.
Para p = 2:
2x2 + 1 = 5
Que también es un número primo.
Recibieron ese nombre por la matemática francesa Sophie Germain 2 quien a
pesar de la oposición de sus padres y las dificultades presentadas por una sociedad
sexista, ganó su educación de libros extraídos de la biblioteca de su padre y de
correspondencia con famosos matemáticos como Lagrange, Legendre y Gauss. Por
los prejuicios contra su sexo, no pudo establecer una carrera en matemáticas, por lo
que trabajó independientemente a lo largo de su vida.
En matemáticas, una cadena de Cunningham es una sucesión de números primos
(p1, ..., pn) en la cual se cumple que cada término es igual al doble del anterior más
uno:
1 Marin
MersenneMarin Mersenne ( 1588 – 1648) fue un filósofo francés del siglo XVII que
estudió diversos campos de la teología, matemáticas y la teoría musical.
2 Sophie GermainMarie-Sophie Germain (1776 - 1831) matemática francesa que hizo importantes
contribuciones a la teoría de números y la teoría de la elasticidad
El ultimo primo de Mersenne hallado a la
fecha de publicación de este
libro se encontro el 25 de enero
de 2013.
Capítulo 1. Primos
20
pi + 1 = 2pi + 1
Para todo 1 ≤ i < n en cuyo caso se denomina Cadena de Cunningham de primera
especie;
O bien que cada término es igual al doble del anterior menos uno
pi + 1 = 2pi − 1
Para todo 1 ≤ i < n en cuyo caso se denomina Cadena de Cunningham de segunda
especie
Se denominan así en honor al matemático A. J. C. Cunningham.
Ejercicio: Primos de Sofia y cadenas de Cunningham
Escribir un programa que encuentre cual es el primo de Sophie menor a
100 que genera la cadena de Cunningham de la primera especie mas larga y
cuales son los miembros de esa cadena.
Para el numero 2 tenemos la siguiente cadena:
2 ⇒ 2∗2+1 = 5
5 ⇒ 2 ∗ 5 + 1 = 11
11 ⇒ 2 ∗ 11 + 1 = 23
23 ⇒ 2 ∗ 23 + 1 = 47
47 ⇒ 2 ∗ 47 + 1 = 95 (ya no es primo)
Por lo tanto la cadena de Cunningham para 2 tiene 4 miembros y estos son
[2,5,11,23]. Solución en página 55
1.5.
Conjetura de Goldbach
La conjetura de Goldbach es uno de los problemas abiertos más antiguos en
matemáticas. Algunos lo califican como el problema más difícil en la historia.
El tío Petros y
Goldbach formuló dos conjeturas relacionadas entre sí sobre la suma de números
la conjetura de
primos
la conjetura fuerte de Goldbach y la conjetura débil de Goldbach.
Goldbach es una
La
que
se discute aquí es la fuerte, y es la que se suele mencionar como «Conjetura
novela escrita
de Goldbach».
en 1992 por el
escritor y maEl matemático peruano Harald Andrés Helfgott ha resuelto la Conjetura débil de
temático grieGoldbach, la formulación afirma que todo número impar mayor que 5 puede escribirse
go Apostolos Do- como suma de tres números primos.
xiadis.
El enunciado reza:
Todo número par mayor que 2 puede escribirse como suma de dos números primos.
Se puede emplear dos veces el mismo número primo.
Veamos algunos:
4 = 2+2
6 = 3+3
8 = 3+5
10 = 3 + 7
12 = 5 + 7
14 = 3 + 11
1.5 Conjetura de Goldbach
Ejercicio: Conjetura de Goldbach
Escriba un programa que reciba como entrada un numero par y muestre
todas las combinaciones posibles de sumas de números primos que lo componen. Solución en página 56
21
2. Divisores
“El mismo anhelo de orden que en el principio creó las matemáticas hizo
que yo buscara un orden en esa aberración de las matemáticas que son las
insensatas piedras que engendran. En sus imprevisibles variaciones quise
hallar una ley. Consagré los días y las noches a fijar una estadística de
los cambios. Mi procedimiento era éste. Contaba con los ojos las piezas
y anotaba la cifra. Luego las dividía en dos puñados que arrojaba sobre
la mesa. Contaba las dos cifras, las anotaba y repetía la operación. Inútil
fue la búsqueda de un orden, de un dibujo secreto en las rotaciones. El
máximo de piezas que conté fue 419; el mínimo, tres. Hubo un momento
que esperé, o temí, que desaparecieran. A poco de ensayar comprobé que
un disco aislado de los otros no podía multiplicarse o desaparecer. Naturalmente, las cuatro operaciones de sumar, restar, multiplicar o dividir,
eran imposibles. Las piedras se negaban a la aritmética y al cálculo de
probabilidades. Cuarenta discos, podían, divididos, dar nueve; los nueve,
divididos a su vez, podían ser trescientos.”
Jorge Luis Borges - “Tigres azules”, La memoria de Shakespeare
Todo numero compuesto tiene divisores, son algo así como los bloques de construcción de cada numero, especialmente los números primos que vendrían a ser las
formas únicas de bloques con las que se arman las otras.
Como dice el matemático polaco Leopold Kronecker 1 “Dios ha creado los números naturales, el resto es obra del hombre” y si bien fue dicha en un contexto diferente,
hasta se podría decir que mas teológico que matemático, expresa mi pensamiento,
considerando los divisores, se clasificaron los numeros, por ejemplo en abundantes,
insuficientes y perfectos, o se encontraron extrañas y curiosas relaciones como los
numeros amigos.
En computación, mas precisamente en la programación, el término divide y vencerás (DYV) se refiera a una premisa para el diseño de algoritmos. El método está basado
en la resolución recursiva de un problema dividiéndolo en subproblemas de igual tipo
1 Leopold Kronecker (1823 - 1891). Matemático y lógico que defendía que la aritmética y el
análisis deben estar fundados en los números enteros prescindiendo de los irracionales e imaginarios.
Capítulo 2. Divisores
24
o similar continuando así hasta que estos subproblemas llegan a ser lo suficientemente
sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno
de los subproblemas se combinan para dar una solución al problema original.
En el mundo de los programadores dividir por cero es uno de los errores mas
comunes entre los estudiantes y se considera un error logico. Las computadoras
generalmente usan algoritmos de restas sucesivas, al ser el divisor cero, la resta como
tal se ejecuta por siempre, ya que el dividendo nunca cambia en consecuencia se entra
en un bucle infinito.
Esta sección aborda el tema de los divisores.
2.1.
Divisores consecutivos
En matemáticas, se dice que un número entero b es divisible entre un entero a
(distinto de cero) si existe un entero c tal que: b = a ∗ c. Esto es equivalente a decir que
b es «exactamente divisible» por a, o bien, que el resto de la división euclídea es cero.
Se suele expresar de la forma a|b, que se lee: «a divide a b», o «a es un divisor de
b» o también «b es múltiplo de a».
6 es divisible por 3, ya que 6 = 3 ∗ 2; pero 6 no es divisible por 4, pues no existe
un entero c tal que 6 = 4·c, es decir que el resto de la división euclídea (entera) de 6
entre 4 no es cero.
Ejercicio: DIvisores consecutivos
Escribir un programa que encuentre el menor numero entero divisible por
todos los enteros consecutivos a partir de 1 hasta un limite que recibirá como
entrada por linea de comando. Por ejemplo numero 60 es el menor numero
divisible por 1,2,3,4 y 5. Solución en página 67
2.2.
A la unidad se
considera divisor propio, pero no lo es el
mismo número.
Números amigos
Dos números a y b son amigos si a es la suma de los divisores propios de b, y b es
la suma de los divisores de a.
El primer par de números amigos ( 220 y 284) ya era conocido por los griegos.
El siguiente par de números amigos fue descubierto en el siglo XIII y redescubierto
por Fermat en 1636 (los números 17.296 y 18.416). El filósofo francés R. Descartes
descubrió el siguiente par: 9.363.584 y 9.437.056.
Ambos grandes pensadores se saltaron el par de números amigos 1.184-1.210 que
fue descubierto por un niño italiano de 16 años llamado Niccolò Paganini.
No hay que olvidar al gran Euler 2 , puesto que él trabajo incansablemente tratando
de encontrar fórmulas para encontrar números amigos.
Tabit ibn Qurra 3 descubrió una fórmula con la que podían se podían hallar
números amigos:
Decía el sabio árabe que si se cumplían las condiciones siguientes:
p = 3 ∗ 2n−1 − 1
q = 3 ∗ 2n − 1
r = 9 ∗ 22n−1 − 1
2 Leonhard
Paul Euler (15 de abril de 1707 - 18 de septiembre de 1783), fue un matemático y
físico suizo.
3 Tabit ibn Qurra Destacó en su época como un gran astrónomo y matemático.
2.3 Perfectos y binarios
25
Donde n > 1 es entero y p, q, y r son números primos, entonces 2n pq y 2n r son un
par de números amigos.
Esta fórmula genera los pares (220, 284), (1.184, 1.210), (17.296, 18.416) y
(9.363.584, 9.437.056). Mientras que el par de números amigos (6.232, 6.368) no se
puede hallar por la fórmula anterior.
En consecuencia, hay que señalar que no todos los números amigos se obtienen
con el procedimiento de Tabit, pero si son amigos todos los números que se obtienen
con dicho procedimiento.
El primer par de números amigos esta formado por los enteros (220, 284), dado
que:
Los divisores propios de 220 son
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Los divisores propios de 284 son
1 + 2 + 4 + 71 + 142 = 220
Si un número es amigo de sí mismo (es igual a la suma de sus divisores propios),
recibe el nombre de número perfecto y no se considera amigo, por ejemplo el 6 o el
28.
Ejercicio: Números amigos
Encontrar todos los pares de números amigos menores a 1.000.000. No se
deben considerar los pares invertidos. Solución en página 60
2.3.
Perfectos y binarios
Mientras mas nos concentramos en cierto grupo de numero nos encontramos con
algunas características, relaciones o curiosidades que a primera vista son realmente
sorprendentes, casi mágicas en algunos casos. Pero si analizamos mas profundamente
podemos descubrir que eso que parece tan sorprendente quizás sea algo relativamente
evidente que no podemos ver sin un análisis mas profundo.
Los números perfectos son uno de esos tipos de números que poseen características
sorprendentes. Su propia definición hace que su denominación sea coherente con su
especial característica:
Un número entero positivo N es un número perfecto si la suma de todos sus
divisores (excluyéndolo a él mismo) es igual al propio N.
6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
Hay dos cuestiones interesantes sobre los números perfectos que actualmente no
tienen respuesta.
1. ¿Existen infinitos números perfectos?
2. ¿Existen números perfectos impares?
Si convertimos un numero perfecto a binario y observamos su representación
binaria notaremos algo muy especial, ya que en todos los casos aparecen una cierta
cantidad de unos seguidos de otra cierta cantidad de ceros. La cantidad de unos es un
número primo, la cantidad de ceros es un número par y la cantidad de ceros es igual a
la cantidad de primos - 1.
El matemático
Euclides descubrió que los cuatro primeros números perfectos
vienen dados por
la fórmula 2n−1 ∗
(2n − 1)
Capítulo 2. Divisores
26
Números perfectos
Unos
Ceros
Decimal
Binario
2
1
6
110
3
2
28
11100
5
4
496
11111000
7
6
8182
1111111000000
Surgen a partir de esta observación dos nuevas preguntas
1. ¿Esto es siempre así?
2. ¿Tiene algún tipo de explicación?
Pues sí, es así siempre que el número perfecto sea par. Y sí, tiene explicación y
tiene que ver con la correspondencia de los números perfectos pares con los primos
de Mersenne, pero dejo eso para que el lector lo investigue por su parte, pasemos al
problema.
Ejercicio: Números perfectos
Escribir un programa que busque todos los números perfectos
que se pueden representar con un binario de hasta 64 dígitos,
para la búsqueda se compondrá cada binario perfecto según
la formula
binario perfecto = 1 repetido una cantidad primo de veces concatenado con 0 repetido la cantidad de unos
menos 1
Para luego convertir este numero en decimal e imprimirlo
por pantalla tanto la representación binaria como decimal.
Solución en página 60
2.4.
Los números naturales fueron
clasificados por
primera vez como deficientes,
perfectos o abundantes por Nicómaco de Gerasa en su Introductio Arithmetica.
Números deficientes, abundantes y perfectos
Se puede clasificar los números mediante la relación que la suma de sus divisores
tengan con el propio numero.
ABUNDANTE: la suma de sus divisores propios es mayor que él.
12 sus divisores, 1, 2, 3, 4 y 6 suman 16 que es mayor que 12.
DEFICIENTE: la suma de sus divisores propios es menor que él.
10 sus divisores, 1, 2 y 5 suman 8 que es menor que 10.
PERFECTO: la suma de sus divisores propios es igual a él. 6 sus
divisores, 1, 2 y 3 suman 6 que es igual a 6.
Los números Primos de Mersenne están íntimamente relacionados con los números
perfectos. En efecto Euclides demostró que si M es un número primo de Mersenne,
entonces M ∗ (M + 1)/2 es un número perfecto. Asímismo, Euler demostró en el En el
siglo XVIII que todos los números perfectos pares son de la forma M ∗ (M + 1)/2. No
2.5 Congruentes con modulo 42
27
se conocen en la actualidad números perfectos impares, y se sospecha que no existe
ninguno.
Ejercicio: Números deficientes, abundantes y
perfectos
En este caso se pide un programa que reciba como entrada
un entero que es el limite hasta donde se contaran la cantidad
de números deficientes, abundantes y perfectos existentes y
mostrar por pantalla estos resultados. Solución en página 61
2.5.
Congruentes con modulo 42
Todos sabemos que la respuesta a la pregunta sobre el sentido de la vida, el
universo y todo lo demás es 42.
En la saga “The Hitchhiker’s Guide to the Galaxy”, se construye una supercomputadora llamada Pensamiento Profundo, la segunda mejor computadora de
todos los tiempos con el solo fin de responder a la pregunta sobre el sentido de la vida,
el universo y todo lo demás, puesta a calcular finalmente concluye después de siete
millones y medio de años y da su respuesta a tan importante pregunta, dice “cuarenta
y dos”, acotando que para poder comprender la respuesta se tiene que replantear la
pregunta ya que esta fue mal formulada.
Por otra parte, se dice que un par de números son congruentes cuando dos
números enteros a y b tienen el mismo resto al dividirlos por un número natural m
distinto de 0, llamado el módulo. Dicho de otra manera, dos números enteros a y b se
dice que son congruentes respecto de un número natural (entero positivo) llamado
módulo m si las divisiones a/m y b/m dan el mismo resto.
Los números 13 y 21 son congruentes de módulo 4, ya que
13/4 nos da 3 de cociente y 1 de resto. Del mismo modo al
dividir 21/4 obtenemos 5 de cociente y 1 de resto, por lo tanto
verifica la definición anterior Se expresa utilizando la notación:
a ≡ b(mod m)
Ejercicio: Congruentes con módulo 42
Escribir un programa que responda si la cantidad de números congruentes en el intervalo 100..1000 es divisible por 42.
Solución en página 62
Guía del viajero intergaláctico es una radiocomedia escrita por Douglas
Adams que se
comenzo a transmitir en 1978.
3. Especiales
Para mucha gente, yo diría que la mayoría, los números les parecen aburridos o por
lo menos poco interesantes, sin embargo si nos tomamos un tiempo para reflexionar al
respecto encontraremos que las propiedades de algunos de ellos los hacen bastante
interesante y divertidos, veamos un ejemplo, entre los números que presentan curiosidades matemáticas podemos citar el 142857. Este número tiene la particularidad
que al ser multiplicado por los enteros de 2 a 6, el resultado es un nuevo numero con
las mismas cifras, pero en diferente orden, a este tipo de números se los suele llamar
cíclicos.
142857 ∗ 1 = 142857
142857 ∗ 2 = 285714
142857 ∗ 3 = 428571
142857 ∗ 4 = 571428
142857 ∗ 5 = 714285
142857 ∗ 6 = 857142
Pero. ¿Existen números que no tengan ninguna característica que los haga interesantes?
Estos números especiales tienen su origen en una costumbre de los aficionados
a las matemáticas de encontrar propiedades curiosas en ciertos números. Aquellos
que las poseen se consideran interesantes, y los que no, aburridos. La paradoja es si
existen o no los números aburridos.
Supongamos que no podemos encontrarle alguna propiedad a todos los números
naturales, y los separamos en dos grupos, uno compuesto por los números “aburridos”,
y otro por los “interesantes”. Imaginemos ahora que el 10 es el primer numero al que
no le podemos encontrar nada interesante, esa es una particularidad, por lo tanto lo
convertiría en un numero muy interesante, ya que se ha convertido en “el número más
pequeño que no tiene ninguna particularidad”. Esa característica lo transforma en
“interesante”, y por lo tanto debe ser trasladado al grupo de los números interesantes.
Ahora eliminado el 10, otro número ha pasado a ocupar su lugar, convirtiéndose en el
nuevo “número más pequeño que no tiene ninguna particularidad”, por lo que también
deberíamos moverlo al otro conjunto y así hasta terminar con todo los números y
acabar con un conjunto de “números interesantes” compuesto por todos los que
Capítulo 3. Especiales
30
teníamos al principio, y otro que está vacío.
Esto nos obliga a concluir que no existen números que no son interesantes.
Por otra parte, es válido preguntarse que pueden de tener de interesantes los
integrantes de un conjunto que reúne a la totalidad de los números que existen. En
efecto, una característica que es compartida por absolutamente todos no tiene nada de
especial. La paradoja, a pesar de estar basada en una propiedad ambigua, existe.
3.1.
A Ramanujan
a los 12 años
dominaba la trigonometría, a
pesar de su genio matematico nunca pudo
aprobar el ingreso universitario porque sólo se dedicaba
a sus diversiones matemáticas.
Número de Hardy-Ramanujan
Srinivasa Aiyangar Ramanujan 1 fue un matematico indu de una genialidad original
y destacada, desde muy chico sus divertimentos estaban solo basados en el pensamiento
abstracto y pocas y breves anotaciones sobre matematica. Fue descubierto por el
matematico britanico Godfrey Harold Hardy 2 quien lo llevo a vivir a inglaterra donde
trabajaron juntos durante la corta vida de Ramanujan.
Afectado por una tuberculosis que se agravaba por el clima de Inglaterra, Ramanujan retornó a su país natal en 1919 y falleció poco tiempo después en Kumbakonam
(a 260 km de Chennai Madras) a la edad de 32 años. Dejó varios libros llamados
Cuadernos de Ramanujan los cuales continúan siendo objeto de estudios.
Recientemente, las fórmulas de Ramanujan han sido fundamentales para nuevos
estudios en cristalografía y en teoría de cuerdas.
El número de Hardy-Ramanujan tiene como origen la siguiente historia, el matemático Godfrey Harold Hardy iba en taxi rumbo al hospital a visitar al celebre
Ramanujan y le llamo la atención el numero del taxi, 1729. Cuando llego al hospital
le comento a Ramanujan sobre este numero y le dijo "1729 es un número aburridoamanujan le contesto "No, Hardy, es un número muy interesante. Es el número más
pequeño expresable como la suma de dos cubos positivos de dos formas diferentes".
13 + 123 93 + 103 = 1729
Ejercicio: Número Hardy-Ramanujan
Escribir un programa que cuente la la cantidad de combinaciones de 4 números (n1 , n2 , n3 , n4 ) que cumplen con la formula
n31 + n32 = n33 + n34 menores a 100. Solución en página 63
3.2.
Números narcisistas
Narciso era un griego que tenia lo que la mayoría de los hombres deseamos
en cuanto a nuestra apariencia, era hermoso, con solo verlo una vez las mujeres
se enamoraban pero él las rechazaba a todas ya que se amaba a si mismo por su
desmesurada belleza, entre las jóvenes heridas por su amor estaba la ninfa Eco un
día, cuando él estaba caminando por el bosque, acabó apartándose de sus compañeros.
esucho unos ruidos entre los arboles y él preguntó:
Eco se había ganado el castigo
de Hera al seducir a Zeus y
por ello ésta la
había condenado a repetir las
últimas palabras
de todo lo que
escuchara.
-¿Hay alguien aquí?
Eco respondió:
-Aquí, aquí
1 Srinivasa
Aiyangar Ramanujan - Erode 22 de diciembre de 1887 - Kumbakonam 26 de abril
de 1920 fue un matemático indio. De familia humilde, a los siete años asistió a una escuela pública
gracias a una beca. Recitaba a sus compañeros de clase fórmulas matemáticas y cifras de pi
2 Godfrey Harold Hardy (1877-1947) fue un matemático británico.
3.3 Cubos de Nicomaco
31
Incapaz de verla oculta entre los árboles, Narciso le gritó:
-¡Ven!
Después de responder:
-Ven, ven
Eco salió de entre los árboles con los brazos abiertos. Narciso cruelmente se negó
a aceptar su amor, por lo que la ninfa, desolada, se ocultó en una cueva y allí se
consumió hasta que sólo quedó su voz.
Para castigar a Narciso por su soberbia, Nemesis, la diosa de la venganza, hizo
que se enamorara de su propia imagen reflejada en una fuente. En una contemplación
absorta, incapaz de apartarse de su imagen, acabó arrojándose a las aguas. En el sitio
donde su cuerpo había caído, creció una hermosa flor, que hizo honor al nombre y la
memoria de Narciso.
Los números también pueden ser narcisistas, un número narcisista es aquel que
es igual a la suma de cada uno de sus dígitos elevados a la “n” potencia (donde “n”
es el número de cifras del número). La metáfora de su nombre alude a lo mucho que
parecen “quererse a sí mismos” estas cifras.
El 153 es un número narcisista puesto que:
13 + 53 + 33 = 1 + 125 + 27 = 153
Los primeros números narcisistas de mas de una cifra son:
153
370
371
407
1634
8208
9474
54748
Ejercicio: Números narcicistas
Escribir un programa que saque por pantalla todos los números
narcisistas de 7 cifras. Solución en página 64
3.3.
Cubos de Nicomaco
Nicomaco de Gerasa3 es conocido por su Introducción a la Aritmética, considerado
el primer trabajo en el que la aritmética se separa de la geometría y donde se trató
sobre los números deficientes, perfectos y abundantes. Descubrió una interesante
relación entre los numero impares y los cubos, veamos los ejemplos a continuacion:
Sumando el primer impar se obtiene el primer cubo (+1 = 1);
Sumando los dos siguientes impares, se obtiene el segundo
cubo (3 + 5 = 8); Sumando los tres siguientes, se obtiene el
tercer cubo (7 + 9 + 11 = 27);
3 Nicómaco
de Gerasa (100 d. C., Gerasa), fue un filósofo y matemático neopitagórico. Autor de
la obra de gran influencia Introducción a la aritmética (Arithmetike eisagoge), un tratado en donde
aborda la teoría de números.
Capítulo 3. Especiales
32
Ejercicio: Cubos de nicomaco
Escribir un programa que escriba por pantalla la comprobación del enunciado para los 10 primeros cubos con la siguiente
forma:
+1 = 13 = 1
+3 + 5 = 23 = 8
+7 + 9 + 11 = 33 = 27
+13 + 15 + 17 + 19 = 43 = 64
+21 + 23 + 25 + 27 + 29 = 53 = 125
Solución en página 64
3.4.
Numeros de Lychrel
En matemáticas un numero capicúa es un número palíndromico, del griego palin
dromein, “volver a ir hacia atrás”, es una palabra, número o frase que se lee igual
hacia adelante que hacia atrás. El término se origina en la expresión catalana cap i
cua (cabeza y cola).
La palabra capicúa se refiere a cualquier
número que se
Si se toma un número cualquiera, por supuesto con mas de un dígito, y se lo
lee igual de izinvierte, al sumarlo con el numero original existe la posibilidad que dé un Número
quierda a dereCapicúa.
cha y de derecha a izquierda.
Analicemos un par de casos:
El nombre «Ly12 + 21 = 33
chrel» fue acuñado por Wa102 + 201 = 303
de Van LandingSi no resulta así, como en el siguiente caso:
ham como un
48 + 84 = 132
anagrama aproHay que repetir el proceso hasta obtenerlo:
ximado de Cheryl,
132 + 321 = 353
el nombre de
Así tenemos por ejemplo que si se prueba con el 187, necesu novia.
sitamos 23 iteraciones para llegar al capicúa buscado que
es:
8.813.200.023.188
Los números de Lychrel son aquellos que no puede formar un palíndromo a través
del proceso iterativo repetitivo de invertir sus dígitos y sumar los números resultantes.
En base decimal, no ha sido demostrado que los números de Lychrel existan, pero
algunos son sospechosos porque repitiendo el proceso antes descripto no se encontró
el palíndromo buscado.
Ejercicio: Números de Lychrel
Escribir un programa que encuentre todos los números
sospechosos de ser un numero de Lychrel menores a 300,
para ello vamos a fijar como limite de interacciones 40.
Solución en página 65
3.5 Constante de Kaprekar
3.5.
33
Constante de Kaprekar
El matemático indio Kaprekar 4 descubrió un muy curioso numero, el 6174 y este
lleva su nombre en honor a el. Este número es el resultado de la aplicación repetida de
la Operación de Kaprekar que consiste en los siguientes pasos:
Escoger cualquier número de cuatro dígitos (con limitadas excepciones, véase
más abajo).
Ordenar los cuatro dígitos en orden ascendente, para obtener el minuendo que
usaremos para una resta.
Ordenar los mismos cuatro dígitos en orden descendente, para obtener el sustraendo de la misma resta.
Calcular el resto, restando el sustraendo del minuendo.
Si el resto no es igual a 6174, repetir los cuatro pasos anteriores.
El procedimiento no se repite nunca mas de 7 veces siempre se termina llegando
al numero 6174, el proceso termina indefectiblemente en 6174 porque si se sigue
repitiendo la secuencia de pasos, se sigue obteniendo el mismo resultado ya que 7641
– 1467 = 6174.
Por ejemplo, supongamos que partimos del número de cuatro
dígitos 3452:
5432 − 2345 = 3087
8730 − 378 = 8352
8532 − 2358 = 6174
Ejercicio: Constante de Kaprekar
Escribir un programa que pida que se ingrese por teclado un
numero de 4 cifras y como respuesta imprima por pantalla todas las transformaciones y operaciones necesarias para llegar
a la constante de Kaprekar, tal como se muestra en el ejemplo
anterior. Solución en página 65
4 Dattatreya Ramachandra Kaprekar (1905- 1986) fue un matemático indio, cuyo nombre es
asociado con una serie de conceptos en la teoría de números.
Excepcion:
Números de cuatro dígitos iguales, por ejemplo, el 1111, debido que su sustracción resulta en el número cero.
Números de cuatro dígitos con
tres números repetidos, como
por ejemplo, el
1112, resultan
en 999 después
de una iteración
de la resta, y resultarían en 0,
después de una
segunda.
4. Misceláneas
“Insisto sobre el carácter inventivo que hay en cualquier lenguaje, y lo
hago con intención. La lengua es edificadora de realidades. Las diversas
disciplinas de la inteligencia han agenciado mundos propios y poseen
un vocabulario privativo para detallarlos. Las matemáticas manejan su
lenguaje especial hecho de guarismos y signos y no inferior en sutileza a
ninguno.”
Jorge Luis BOrges - Palabrería para versos
“Si las matemáticas (sistema especializado de pocos signos, fundado y
gobernado con asiduidad por la inteligencia) entrañan incomprensibilidades y son objeto permanente de discusión, ¿cuántas no oscurecerán el
idioma, colecticio tropel de miles de símbolos, manejado casi al azar?”
Jorge Luis Borges- El culteranismo
Muchas veces se encuentran curiosidades con los numero que son difíciles de clasificar o pueden ser clasificadas en múltiples secciones, a fin de evitar complicaciones
y mantener la simplicidad el libro contiene una sección de misceláneos, problemas de
temática variada.
4.1.
Suma de consecutivos
Algunos números se pueden obtener mediante la suma de numero consecutivos,
por ejemplo, tomemos los dos menores:
Capítulo 4. Misceláneas
36
Números que se obtienen sumando enteros consecutivos. 3 =
1+2
6 = 1+2+3
Algunos números tienen varias sucesiones de consecutivos
que sumados dan el mismo. Como por ejemplo los números
33 que tiene 3 o el 975 que tiene 11. 33 sumandos: 3 4 5 6 7 8
33 sumandos: 10 11 12
33 sumandos: 16 17
975 sumandos: 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
975 sumandos: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47
975 sumandos: 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
46 47 48 49 50
975 sumandos: 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51
975 sumandos: 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
975 sumandos: 69 70 71 72 73 74 75 76 77 78 79 80 81
975 sumandos: 93 94 95 96 97 98 99 100 101 102
975 sumandos: 160 161 162 163 164 165
N975 sumandos: 193 194 195 196 197
975 sumandos: 324 325 326
975 sumandos: 487 488
Ejercicio: Suma de consecutivos
Escribir un programa que imprima por pantalla el numero menor a 1000 que tiene la mayor sucesión de consecutivos cuya
suma lo tiene como resultado y cuantos y cuales son sus miembros. Solución en página 67
4.2.
Cuadrados invertidos
Algunos números tienen la particularidad que si los elevamos al cuadrado obtenemos como resultado un numero que es el invertido del cuadrado del número original
invertido.
122 = 144 y 212 = 441
132 = 169 y 312 = 961
Ejercicio: Cuadrados invertidos
¿Cual es el mayor numero menor a 10.000.000 que cumple esta
curiosa condición?. Solución en página 68
4.3.
Distribución uniforme de raíces digitales
La raíz digital de un numero es el dígito único que se obtiene de sumar todos sus
dígitos recursivamente hasta obtener un numero de una sola cifra.
4.4 Suma de dígitos potenciados
37
Por ejemplo para obtener la raiz digital de 297:
2 + 9 + 7 = 18
1+8 = 9
Por lo tanto la raíz digital de 297 es 9.
Experimentado con raíces digitales me pareció que la distribución en un intervalo
dado por todos los números con la misma cantidad de cifras es uniforme, es decir,
que existen la misma cantidad de raíces digitales 1, 2, 3, 4, 5, 6, 7, 8, 9 para todos los
numeros de la misma cantidad de cifras.
Ejercicio: Raices digitales
Escribir un programa que verifique o refute esta suposición para
números de 4 cifras. Solución en página 68
4.4.
Suma de dígitos potenciados
Si tomamos un numero natural y luego lo descomponemos en sus dígitos y
elevamos cada uno a la cuarta potencia para finalmente sumarlos entre si, podemos,
en algunos casos obtener el numero original.
Verificación para el numero 1634:
1634 = 14 + 64 + 34 + 44 = 1 + 1296 + 81 + 256 = 1634
Ejercicio: Suma digitos a la cuarta
Escribir un programa que encuentre todos los numero menores
a 10.000 que cumplen esa condición. Solución en página 69
4.5.
Conjetura de Collatz
La conjetura de Collatz, fue enunciada por el matemático Lothar Collatz 1 en 1937,
y a la fecha no se ha resuelto.
El enunciado dice lo siguiente:
Si a cualquier numero entero positivo le aplicamos la siguiente
operación:
Si el número es par, se divide entre 2.
Si el número es impar, se multiplica por 3 y se suma 1.
(
R
n/2
si n es par
(n)
3n + 1 si n es impar
Si aplicamos esta función a “n” y luego a cada resultado obtenido siempre alcanzaremos el 1 para cualquier número con el que comencemos.
1 Lothar
Collatz (6 de julio, 1910 – 26 de septiembre, 1990) matemático alemán que estudió en
diferentes universidades alemanas incluyendo la Universidad de Berlín bajo la tutela de Alfred Klose,
recibiendo el doctorado en 1935.
Capítulo 4. Misceláneas
38
Algunos ejemplos: 20 = 105168421
35 = 10653160804020105168421
341 = 10245122561286432168421
512 = 2561286432168421
852 = 426213640320160804020105168421
Así tenemos que por ejemplo el numero 921 necesita 129 interacciones lo que es igual al numero original invertido, 921
invertido es 129:
921 = 2764 1382 691 2074 1037 3112 1556 778 389 1168 584 292 146 73 220 110
55 166 83 250 125 376 188 94 47 142 71 214 107 322 161 484 242 121 364 182
91 274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593
1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276 638
319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734
1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325
976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
Ejercicio: Conjetura de Collatz
Escribir un programa que encuentre el otro numero de 3 cifras
que invertido sea igual a la cantidad de interacciones necesarias para reducirlo a 1. Solución en página 69
4.6.
Multiplicación etíope
El método etíope de multiplicación, también conocido como método ruso, consiste
en el siguiente proceso:
Tomamos 2 números a multiplicar
Ponemos ambos números como cabeceras de dos columnas.
En la primera columna dividimos el número por 2 sucesivamente (división
entera).
En la segunda vamos multiplicando por dos.
Hacemos esto hasta llegar a uno en la primera columna.
Ahora, tachamos en la derecha los números que a la izquierda tienen un número
par.
Finalmente sumamos todos los números que han quedado a la derecha, incluido
el primero.
Por ejemplo para 21 ∗ 42:
Multiplicación Etíope
21
42
10
84
5
168
2
336
1
672
42 + 168 + 672 = 882 = 21 ∗ 42
4.7 Conjetura de Euler
39
Ejercicio: Multiplicación Etíope
Escribir un programa que implemente 4 funciones:
Función doble, que recibe un numero entero y devuelve
el doble.
Función medio, que recibe un numero entero y devuelve
el resultado de la división entera por 2.
Función espar, que recibe un numero entero y devuelve
un valor booleano verdadero si es par.
Función multiplicacionetiope, que implementa mediante
el uso de las funciones anteriores el método citado.
El programa solicita por pantalla dos números enteros (multiplicando y multiplicador) y devuelve el resultado de la multiplicación calculado mediante la función multiplicacion etiope.
Solución en página 70
4.7.
Conjetura de Euler
El teorem de Pitágoras es por todos conocido, dice que en todo triángulo rectángulo, el cuadrado de la hipotenusa es igual a la suma de los cuadrados de los
catetos.
a2 + b2 = c2
A partir de ese famoso teorema, el genial Fermat afirma en su Ültimo teorema de
Fermat, o teorema de Fermat-Wiles:
Si n es un número entero mayor que 2, entonces no existen
números enteros positivos x, y y z, tales que se cumpla la igualdad:
an + bn = cn
Siguiendo con esa linea argumental y de razonamiento, luego llego Leonhard Paul
Euler 2 quien intento generalizar el Teorema de Fermat de la siguiente manera:
∑ni=1 aki = bk
Donde:
n>1
y
a1 , a2 , ..., an yb 6= 0
Entonces:
n>k
Dicho de otra manera la conjetura dice que no existen conjuntos de números cuyas
sumas de potencias a un mismo exponente de como resultado otro numero elevado a
la misma potencia.
2
(Basilea, Suiza, 15 de abril de 1707 - San Petersburgo, Rusia, 18 de septiembre de 1783), conocido como Leonhard Euler, fue un matemático y físico suizo. Se trata del principal matemático del
siglo XVIII y uno de los más grandes y prolíficos de todos los tiempos.
Capítulo 4. Misceláneas
40
an + bn + ... + nn = zn
L. J. Lander y T. R. Parkin en 1966 demostraron que la conjetura era falsa usando
una computadora CDC 6600, con la que encontraron un contra ejemplo para k = 5.
Ejercicio: Conjetura de Euler
Encontrar el contra ejemplo de Lander y Parkin sabiendo que
todos los enteros a, b, ... n y z son menores que 250 y que la
sumatoria se compone de 4 sumandos a la 5ta, es decir n = 5.
Solución en página 71
5. Criptografía
“He comprobado que la decimocuarta edición de la Encyclopaedia Britannica suprime el artículo sobre John Wilkins. Esa omisión es justa, si
recordamos la trivialidad del artículo.
...
Éste abundó en felices curiosidades: le interesaron la teología, la criptografía, la música, la fabricación de colmenas transparentes, el curso de un
planeta invisible, la posibilidad de un viaje a la luna, la posibilidad y los
principios de un lenguaje mundial.
...
Las palabras del idioma analítico de John Wilkins no son torpes símbolos
arbitrarios; cada una de las letras que las integran es significativa, como lo
fueron las de la Sagrada Escritura para los cabalistas. Mauthner observa
que los niños podrían aprender ese idioma sin saber que es artificioso;
después en el colegio, descubrirán que es también una clave universal y
una enciclopedia secreta.”
Jorge Luis Borges - El idioma analítico de John Wilkins
Cuando era niño mi padre, quien acostumbraba llevarme una vez al mes a la
librería para que eligiera un libro, me compro el libro “Como hacer de espías” se
trababa de un ejemplar que formaba parte de una colección que a finales de los 70
Ediciones Plesa publicó, eran pequeños libros en los que nos daban las instrucciones
para llevar a cabo de forma sencilla un montón de experimentos que muchos niños
realizamos a lo largo de los ochenta.
Me fascino el capitulo dedicado a cifrar mensajes, tanto que estuve entretenido
con ese tema por muchos días e incluso noches, aun hoy es una de las ramas de la
informática que mas me apasiona.
En esta sección se proponen una serie de problemas que tienen a la criptografía
como tema principal, al tratarse de un tema tan amplio y rico se ha seleccionado a
aquellos que usan un algoritmo sencillo pero existe toda una ciencia dedicada al tema.
Los números primos juegan un importante papel en la mayoría de los sistemas
criptográficos actuales usados en las comunicaciones y protección de datos.
Capítulo 5. Criptografía
42
5.1.
Cifrado Cesar
Según Suetonio1 , Julio Cesar uso un sistema de cifrado basado en un desplazamiento en el alfabeto de tres espacios para proteger sus mensajes importantes de
contenido militar.
El cifrado Cesar fue utilizado por la reina
“Si tenía que decir algo confidencial, lo escribía usando el cifrado, esto
María Estuardo
es, cambiando el orden de las letras del alfabeto, para que ni una palabra
de Escocia, papudiera entenderse. Si alguien quiere decodificarlo, y entender su signifira conspirar juncado, debe sustituir la cuarta letra del alfabeto, es decir, la D por la A, y
to contra su prima Isabel I. Los
así con las demás.”
mensajes fueron
descifrados, y
Suetonio , Vida de los Césares
así quedó al descubierto la consAunque César es la primera persona de la que se sabe ha usado este sistema,
piración. María
anteriormente ya se utilizaron otros cifrados por sustitución. El sobrino de Julio César,
perdió la cabeAugusto, también empleó el cifrado pero con un desplazamiento de uno:
za en su ejecución.
“Cuando escribía un texto cifrado, sustituía la B por la A, la C por la B y
el resto de las letras de ese mismo modo, usando AA para la X.”
Suetonio, Vida de Augusto
Hay indicios de que Julio César usaba también sistemas más complicados, y un
escritor, Aulus Gellius, hace referencia a un tratado (ahora perdido) sobre el cifrado:
“Hay incluso un tratado ingeniosamente escrito del gramático Probus
referente al significado secreto de las letras en la composición de las
epístolas de César.”
Aulus Gellius2
Ejercicio: Cifrado Cesar
Escribir un programa que solicite por pantalla el texto a cifrar y el desplazamiento, luego codifique y decodifique
el mensaje mostrando ambos resultados por pantalla.
Solución en página 73
5.2.
Cifrado por transposición
Este tipo de mecanismos de cifrado no sustituye unos símbolos por otros, sino
que cambia su orden dentro del texto. El objetivo de las sustituciones es crear confuEs obvio que el
sión, también se conoce como cifrado por permutación. En este caso al reordenar el
mensaje no debe superar la lon- criptograma aparecerán exactamente los mismos caracteres que en el texto en claro.
En las transposiciones por columnas el texto claro se dispone horizontalmente en
gitud de la taun
bloque
de n columnas por n filas, y el texto cifrado se lee verticalmente por filas.
bla que lo contendrá es decir
n2.
Texto original: ESTO ES UN SECRETO Clave: 5
1 Gayo
Suetonio Tranquilo, fue un historiador y biógrafo romano durante los reinados de los
emperadores Trajano y Adriano.
2 Aulus Gellius fue un abogado y escritor romano del siglo II.
5.3 Cifrado XOR
43
E
E
S
T
S
S
E
O
T
O
U
R
C
N
E
La cadena se debe llenar con espacios en blanco hasta completar la cantidad de
celdas de la tabla.
Para cifrar el mensaje simplemente se tiene que leer la tabla pero en forma vertical
comenzando por la primera columna de la izquierda hacia abajo y continuando por las
siguientes en ese orden. De esta manera obtenemos el texto cifrado.
Texto cifrado:
E E
E
S S S T
T
E O
O U C
N R
Ejercicio: Cifrado por transposición
Escribir un programa que solicite por teclado una cadena y
una clave y muestre por pantalla la tabla generada seguido
del texto cifrado. Solución en página 74
5.3.
Cifrado XOR
Mediante la utilización del operador XOR y de una clave secreta se puede encriptar
una mensaje. Recordemos un poco sobre la tabla de verdad utilizando el operador xor.
Esta tabla nos facilitara la encriptacion.
0
0
1
1
0
1
0
1
0
1
1
0
Supongamos que el emisor envía un mensaje 10010110. Este mensaje es codificado
con la clave 11100100. El proceso de cifrado se vería de la siguiente manera:
Mensaje original (a): 10010110
Clave (b): 11100100
(a) XOR (b) = 01110010
Para decodificar el mensaje una vez cifrado se debe utilizar nuevamente el operador
binario XOR con la misma clave.
Mensaje recibido (a): 01110010
Clave (b): 11100100
(a) XOR (b): 10010110
Con esto podemos observar que el mensaje obtenido como resultado es el mensaje
enviado originalmente.
El operador XOR es muy común como parte de cifrados más complejos. Sin
embargo, por sí solo el cifrado XOR es muy vulnerable y es muy fácil obtener la clave
a través del análisis de varios mensajes cifrados con la misma clave.
Capítulo 5. Criptografía
44
Ejercicio: Cifrado XOR
Escribir un programa que use el operador logico XOR para codificar un mensaje, el mismo solicitara por pantalla una cadena que sera el mensaje a codificar y un caracter que sera la
clave, luego mostrara el texto encriptado y desencriptado.
Solución en página 74
5.4.
Charles Dodgson (Lewis Carroll ) dijo que
el cifrado Vigenère era irrompible en un artículo para una
revista de niños.
Cifrado Vigenere
El cifrado Vigenère3 se asemeja mucho al cifrado César, pero a diferencia de este
usa una clave mas larga que solo un desplazamiento, usa una palabra clave, a este tipo
de sistemas criptográficos se los conoce como poli-alfabeticos.
Es un criptosistema simétrico, es decir, utiliza la misma clave para cifrar y descifrar.
Para resolver este problema, se utiliza una palabra clave en lugar de un carácter
obtenido desplazando el alfabeto. En primer lugar, se asocia cada letra con una cifra
correspondiente.
A
0
B
1
C
2
D
3
E
4
F
5
G
6
H
7
I
8
J
9
K
10
L
11
M
12
N
13
O
14
P
15
Q
16
R
17
S
18
T
19
U
20
V
21
W
22
X
23
Y
24
Z
25
Se codifica un texto tomando una palabra y sumandole las letras de otra palabra
El cifrado de Vigenère debe su
(llamada palabra clave) a cada una de sus letras. La palabra clave se suman indefinidanombre a Blaimente en el texto que se va a cifrar, y después se agrega el código ASCII de cada una
se de Vigenère
de las letras de la palabra clave al texto a cifrar.
que le fue falTexto original: ESTO ES UN SECRETO
samente otorgado el verdadeASCII: 69 83 84 79 69 83 85 78 83 69 67 82 69 84 79
ro autor es GioPalabra clave: HACK
van Batista Belaso.
ASCII: 72 65 67 75
Cifrado: E + H = 69 + 72, S + A = 83 + 65, T + C = 84 + 67, O + K = 79 + 75, E +
H = 69 + 72, S + A = 83 + 65, U + C = 85 + 67, y así sucesivamente...
Luego se saca el modulo o resto dividiendo por la cantidad de elementos que tiene
el alfabeto usado.
En términos matemáticos puede expresarse como:
Yi = (Xi + Zi)modT
Donde Xi es el número de ubicación de la letra, es decir, que a E del texto claro le
corresponde al número 4 en el indice horizontal y ZiH de la clave en modo vertical le
corresponde al número 8, y la letra T es el total de números del alfabeto.
Entonces, para E y H la ecuación quedará de la siguiente manera:
Yi = (4 + 8)mod26.
El resultado es: 12, donde 12 es igual a la letra L en modo horizontal.
Para S y A la ecuación quedará como:
Yi = (19 + 0)mod26
3 Blaise
de Vigenère (1523 - 1596) fue un diplomático, criptógrafo y químico francés.
5.5 Números Romanos
45
El resultado es 19, donde 19 es igual a la letra S en modo horizontal.
Para T y C la ecuación quedará como:
Yi = (20 + 2)mod26
El resultado es 22, donde 22 es igual a V en modo horizontal.
Otra manera es viendo la tabla, por ejemplo buscamos la E en la primera fila
horizontal y la H en la primera columna vertical, en su intersección encontramos la
letra L.
Para descifrar hacemos la operación inversa, al resultado A le restamos la clave
L y tenemos Xi = (Yi - Zi) mod 26, lo que nos da 16, correspondiente a la P que
habíamos encriptado antes. Así hacemos con las demás letras.
Usaremos la siguiente tabla:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
0
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
2
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
3
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
4
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
5
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
6
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
7
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
8
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
9
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
10
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
11
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
12
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
13
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
14
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
15
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
16
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
17
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
18
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
19
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
20
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
21
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
22
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
23
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
24
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
25
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Ejercicio: Cifrado Vigenere
Escribe un programa que implemente el cifrado y descifrado
de Vigenere según las siguientes especificaciones,
Se usará el alfabeto sin Ñ, con W sin espacios
El módulo para las operaciones será 26.
El cifrado opera sobre bloques de letras.
La clave es una palabra o frase que se repite cuantas
veces sea necesario.
Si la clave tiene longitud m , entonces el texto se divide en
bloques de longitud m y la clave se suma a cada bloque,
sumando letra a letra módulo 26, para producir el texto
cifrado.
El programa recibirá como entrada un texto claro y una
palabra clave y sacara por pantalla el texto codificado y
decodificado usando una función para cada caso.
Solución en página 75
5.5.
Números Romanos
Si bien el sistema de numeración romano no es un método de representación
criptográfico podríamos decir que la conversión de números decimales a romanos es
una codificación, es es la razón por la que decidí incluir este problema en esta sección.
El sistema de numeración romano es un sistema de numeración no posicional que
se desarrolló en la antigua Roma fue utilizado en todo el Imperio romano, actualmente
Los romanos desconocían el cero, introducido
posteriormente
por los árabes,
así que no existe ningún símbolo en el sistema de numeración romano
que represente
el valor cero.
Capítulo 5. Criptografía
46
su uso se encientra restringido a ciertos usos de enumeración y no se usan con
propósitos matemáticos.
Para su escritura se usan letras como símbolos y con reglas muy básicas se puede
componer cualquier numero menor a 4000.
Símbolos:
En los relojes
el 4 se representa IIII se dice
que es en protesta de los relojeros por la
ejecución de un
colega que cometió el error
de representar
el 4.
1
I
5
V
10
X
50
L
100
C
500
D
1000
M
Reglas:
Cuando un símbolo aparece después de uno más grande se suma
VI = V +I = 5+1 = 6
Cuando un símbolo aparece antes de uno más grande se resta
IX = X − I = 10 − 1 = 9
No se usa el mismo símbolo más de tres veces seguidas.
Ejercicio: Números romanos
Escribir un programa que solicite la entrada de un numero entero menor a 4000 y por pantalla devuelva su representación en
el sistema de numeración romano. Solución en página 76
6. Secuencias
Problemas con secuencias
“En aquel capítulo de su Lógica que trata de la ley de causalidad, John
Stuart Mill razona que el estado del universo en cualquier instante es una
consecuencia de su estado en el instante previo y que a una inteligencia
infinita le bastaría el conocimiento perfecto de un solo instante para saber
la historia del universo, pasada y venidera.”
Jorge Luis Borges - La creación y P. H. Gosse
“Lo recuerdo en el corredor del hotel, con un libro de matemáticas en la
mano, mirando a veces los colores irrecuperables del cielo. Una tarde,
hablamos del sistema duodecimal de numeración (en el que doce se
escribe 10). Ashe dijo que precisamente estaba trasladando no sé qué
tablas duodecimales a sexagesimales (en las que sesenta se escribe 10).”
Jorge Luis Borges - Tlön, Uqbar, Orbis Tertius
Unos de mis divertimentos favoritos son la resolución de sucesiones o secuencias
matemáticas, generalmente se presentan como una lista ordenada de elementos numéricos y el desafío consiste en inferir la lógica que determina cada elemento de la
misma y asi poder continuar con los elementos de ella.
Una sucesión o secuencia matemática es un conjunto ordenado de números donde
cada uno de sus términos cumple con una determinada cantidad de condiciones o
características para poder formar parte de la lista. Se diferencia de un conjunto en que
el orden en que se presentan revisten relevancia e incluso un mismo elemento puede
repetirse. De manera formal, una sucesión puede definirse como una función sobre el
conjunto de los números naturales (o un subconjunto del mismo).
En esta sección se presentan problema donde no es necesario descubrir las reglas
que rigen la inclusión de los miembros de la sucesión, estas se proveen en el enunciado,
de lo que se trata es de codificar un algoritmo que pueda calcular cada elemento y
escribir la sucesión hasta un limite dado.
Capítulo 6. Secuencias
48
6.1.
Secuencia de Hamming
Números regulares son números que dividen uniformemente potencias de 60 (o
potencias de 30 ).
Veamos el caso de 602 :
Los divisores de
potencias de 60
son llamados números regulares
o números sexagesimales regulares , y son
de gran importancia debido al
sistema de numeración sexagesimal utilizado por los babilonios.
602 = 3600 = 48 ∗ 75
Por lo tanto 48 y 75 son divisores de una potencia de 60 de 60, en consecuencia,
son números regulares .
De manera equivalente, son los números cuyos únicos divisores primos son 2 , 3 y
5.
En teoría de números, estos números son llamados 5-Smooth, ya que se caracterizan por tener sólo 2, 3 , y 5 como factores primos.
En ciencias de la computación , los números regulares a menudo se llaman números
Hamming , después de que Richard Hamming 1 propusiera el problema de encontrar
algoritmos informáticos para generar estos números en orden .
Los números de Hamming forman una sucesión estrictamente creciente de números que cumplen las siguientes condiciones:
El número 1 está en la sucesión.
Si x está en la sucesión, entonces 2x, 3x y 5x también están.
Ningún otro número está en la sucesión.
Ejercicio: Secuencia de Hamming
Escribir un programa que imprima por pantalla todos los numeros de Hamming menores a 100. Solución en página 77
6.2.
Sucesión de Padovan
La sucesión de Padovan es la secuencia de números enteros P(n) definida por los
siguientes valores iniciales
P(0) = P(1) = P(2) = 1
y la siguiente relación de recurrencia
P(n) = P(n − 2) + P(n − 3)
Los primeros valores de P(n) son
1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200
La sucesión de Padovan fue nombrada por el matemático Richard PadovanRichard
Padovan (nacido en 1935) es un arquitecto, matemático, autor, traductor y profesor
del Reino Unido. , quién atribuyó su descubrimiento al arquitecto holandés Hans van
der Laan.
Fue enunciada por primera vez en un articulo “Mathematical Recreations” de la
revista “Scientific American” de junio de 1996.
1 Richard
Wesley Hamming (1915 – 1998) matemático estadounidense que trabajó en temas
relacionados con la informática y las telecomunicaciones. Sus principales contribuciones a la ciencia
han sido el código Hamming, la ventana Hamming y la distancia Hamming.
6.3 Primoriales
49
Ejercicio: Sucesión padovan
Escribir un programa que imprima por pantalla los 50 primeros
términos de la Sucesión Padovan.Solución en página 78
6.3.
Primoriales
El primorial de un número n es el producto de todos los números primos menores
o iguales a él, y su notación es n#.
Por ejemplo el primorial de 7 es:
7# = 2 ∗ 3 ∗ 5 ∗ 7 = 210
La sucesión de los primoriales crece muy rápidamente.
Ejercicio: Promoriales
Los primoriales
son números definidos en la demostración de
la infinitud de
los números primos de Euclides.
Escribir un programa que escriba por pantalla la sucesión de los primoriales de los 10 primeros números primos.
Solución en página 78
6.4.
Primos absolutos
Los primos absolutos o primos permutables son números como el 13 o el 337, en
los que todas las permutaciones posibles de sus dígitos son números primos.
La lista de los primos permutables no es muy larga, empieza algo bastante obvio
como son los primos de un solo dígito
2, 3, 5, 7
Todos los números primos permutables de dos o más dígitos se componen de los
dígitos 1 , 3 , 7 , 9 , obviamente porque ningún número primo excepto 2 es par, y
ningún número primo además 5 es divisible por 5. Se demostró que no existe ningún
primo permutable que contenga tres diferentes de los cuatro dígitos 1 , 3 , 7 , 9 , así
como que no existe ningún primo permutable compuesta de dos o más de cada uno de
dos dígitos nombrados 1, 3, 7, 9 .
Como suele suceder con los números primos, se saben algunas cosas sobre estos
números y otras no. Por ejemplo, se cree que la lista es más o menos esta; no está
claro si hay otros primos permutables que no contengan nada más que unos; se conoce
lo que sucede hasta ciertos límites pero no hay demostraciones definitivas al respecto.
Ejercicio: Primos albsolutos
Escribir un programa que escriba por pantalla la sucesión de numero primos permutables menores a 1000.
Solución en página 79
6.5.
Números Harshad
Los números Harshad también llamados números Niven o multidigital, son números enteros positivos mayores que 0 que son divisibles por la suma de sus dígitos.
Esta secuencia
no tiene miembros con 4, 5 y
6 cifras.
Capítulo 6. Secuencias
50
Por ejemplo, 84 es un número de Harshad ya que si descomponemos 84 en sus dígitos tenemos:
8 y 4 8 + 4 = 12y84/12 = 4 sin resto
Ejercicio: Números Harshad
Escribir un programa que imprima los 100 primeros números
Harshad. Solución en página 80
II
Soluciones
1
Soluciones Primos . . . . . . . . . . . . . . . . . . . 53
1.1
1.2
1.3
1.4
1.5
Numeros primos
Primos gemelos
Primos de Mersenne
Primos de Sofia y cadenas de Cunningham
Conjetura de Goldbach
2
Soluciones Divisores . . . . . . . . . . . . . . . . . 59
2.1
2.2
2.3
2.4
2.5
Divisores consecutivos
Números amigos
Números perfectos
Números deficientes, abundantes y perfectos
Congruentes con módulo 42
3
Soluciones Especiales . . . . . . . . . . . . . . . 63
3.1
3.2
3.3
3.4
3.5
Número de Hardy-Ramanujan
Números narcicistas
Cubos de nicomaco
Números de Lychrel
Constante de Kaprekar
4
Soluciones Misceláneas . . . . . . . . . . . . . 67
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Suma de consecutivos
Cuadrados invertidos
Distribución de raices digitals
Suma de digitos a la cuarta
Conejetura de Collatz
Multiplicación Etíope
Conjetura de Euler
5
Soluciones criptográfia . . . . . . . . . . . . . . 73
5.1
5.2
5.3
5.4
5.5
Cifrado Cesar
Cifrado por transposición
Cifrado XOR
Cifrado Vigenere
Números romanos
6
Soluciones secuencias . . . . . . . . . . . . . . 77
6.1
6.2
6.3
6.4
6.5
Secuencia de Hamming
Sucesión Padovan
Primoriales
Primos absolutos
Números de Harshad
1. Soluciones Primos
1.1.
Numeros primos
Solución: Numeros primos
1
2
3
4
#include
#include
#include
#include
< s t d i o . h>
<iostream >
<cmath>
< s t d l i b . h>
5
6
using namespace std ;
7
8
bool EsPrimo ( i n t ) ;
9
10
11
12
13
14
15
16
17
18
19
i n t main ( i n t argc , const char ∗argv [ ] ) {
i n t numero ;
numero = a t o i ( argv [ 1 ] ) ;
i f ( EsPrimo (numero) ) {
cout << numero << " es primo " << endl ;
} else {
cout << numero << " no es primo " << endl ;
}
return 0;
}
20
21
22
23
24
25
26
27
28
29
30
31
bool EsPrimo ( i n t numero) {
int raiz ;
r a i z = ( i n t ) s q r t (numero) ;
i f (numero == 2 || numero == 3) r e t u r n tr ue ;
f o r ( i n t i = 2 ; numero % i && i <= r a i z ; i ++) {
i f ( i == r a i z ) {
r e t u r n t ru e ;
}
}
return false ;
}
Capítulo 1. Soluciones Primos
54
1.2.
Primos gemelos
Solución: Primos gemelos
1
2
#include < s t d l i b . h>
#include <iostream >
3
4
using namespace std ;
5
6
7
inline int beiler ( int ) ;
i n l i n e bool EsPrimo ( i n t ) ;
8
9
10
11
12
13
14
15
16
17
i n t main ( i n t argc , const char ∗argv [ ] ) {
i n t numero ;
f o r ( i n t i = 0 ; i < 2 0 ; i ++) {
numero = b e i l e r ( i ) ;
i f ( ! EsPrimo (numero − 1) && ! EsPrimo (numero + 1) )
cout << "No se cumple para " << i << endl ;
}
return 0;
}
18
19
i n l i n e i n t b e i l e r ( i n t x ) { r e t u r n 30 ∗ (2 ∗ x − 27) ∗ ( x − 15)
; }
20
21
22
23
24
i n l i n e bool EsPrimo ( i n t numero) {
i f ( ( ( ! ( numero & 1) ) && numero != 2) || (numero < 2) ||
(numero % 3 == 0 && numero != 3) )
return ( false ) ;
25
f o r ( i n t k = 1 ; 36 ∗ k ∗ k − 12 ∗ k < numero ; ++k )
i f ( ( numero % (6 ∗ k + 1) == 0) || (numero % (6 ∗ k −
1) == 0) )
return ( false ) ;
r e t u r n t ru e ;
26
27
28
29
30
}
1.3.
Primos de Mersenne
Solución: Primos de Mersenne
1
2
3
4
#include
#include
#include
#include
<iostream >
< s t d i o . h>
<vector >
<math . h>
5
6
using namespace std ;
7
8
bool EsPrimo ( i n t ) ;
9
10
11
12
i n t main ( i n t argc , const char ∗argv [ ] ) {
bool encontrado ;
i n t numero = 2 , cotejar ;
13
14
15
16
17
18
19
while ( not encontrado ) {
numero++;
i f ( EsPrimo (numero) ) {
cotejar = pow( 2 , numero) − 1 ;
i f ( not EsPrimo ( cotejar ) ) {
cout << cotejar << endl ;
1.4 Primos de Sofia y cadenas de Cunningham
encontrado = t ru e ;
20
21
}
22
}
}
return 0;
23
24
25
}
26
27
28
29
30
31
32
33
34
35
36
37
bool EsPrimo ( i n t numero) {
int raiz ;
r a i z = ( i n t ) s q r t (numero) ;
i f (numero == 2 || numero == 3) r e t u r n tr ue ;
f o r ( i n t i = 2 ; numero % i && i <= r a i z ; i ++) {
i f ( i == r a i z ) {
r e t u r n t ru e ;
}
}
return false ;
}
1.4.
Primos de Sofia y cadenas de Cunningham
Solución: Primos de Sofia y cadenas de Cunningham
1
2
#include <iostream >
#include < c s t d l i b >
3
4
using namespace std ;
5
6
7
8
bool s o f i a ( i n t ) ;
bool primo ( i n t ) ;
i n t cadena_sofia ( i n t ) ;
9
10
11
12
13
14
15
16
17
18
19
20
21
22
i n t main ( i n t argc , char ∗∗argv ) {
i n t resultado_cadena_sofia = 0 , numero = 0 , maximo = 0 ;
i n t l i m i t e = a t o i ( argv [ 1 ] ) ;
f o r ( i n t num = 2 ; num < l i m i t e ; num++) {
resultado_cadena_sofia = cadena_sofia (num) ;
i f ( resultado_cadena_sofia > maximo) {
maximo = resultado_cadena_sofia ;
numero = num;
}
}
cout << " Numero : " << numero << " T o t a l miembros : " <<
maximo << endl ;
return 0;
}
23
24
25
26
27
28
29
bool s o f i a ( i n t num) {
i f ( primo (2 ∗ num + 1) )
r e t u r n t ru e ;
else
false ;
}
30
31
32
33
34
35
36
i n t cadena_sofia ( i n t num) {
i f ( primo (num) ) {
i f ( s o f i a (num) ) {
cout << num << " " << 2 ∗ num + 1 << endl ;
r e t u r n 1 + cadena_sofia (2 ∗ num + 1) ;
}
55
Capítulo 1. Soluciones Primos
56
}
37
38
}
39
40
41
42
43
44
45
46
bool primo ( i n t x ) {
i f ( x == 1 || x == 2) r e t u r n tr ue ;
f o r ( i n t i = 2 ; i < x / 2 ; i ++) {
i f ( x % i == 0) r e t u r n f a l s e ;
}
r e t u r n t ru e ;
}
1.5.
Conjetura de Goldbach
Solución: Conjetura de Goldbach
1
2
#include <iostream >
#include <cmath>
3
4
using namespace std ;
5
6
7
8
i n t buscaPrimoProximo ( i n t , i n t ) ;
i n t buscaPrimoAnterior ( i n t ) ;
bool esPrimo ( i n t ) ;
9
10
11
12
i n t main ( ) {
i n t numero = 0 , primer_primo = 0 , segundo_primo = 0 ;
i n t a = 0 , k = 4 , b = 2 , count2 = 0 , d = 0 ;
13
14
do {
15
cout << " Ingrese un numero par entero mayor que 4 : " ;
cin >> numero ;
} while ( ( numero <= k ) || (numero % 2 != 0) ) ;
16
17
18
primer_primo = 2 ;
segundo_primo = buscaPrimoAnterior (numero) ;
19
20
21
while ( primer_primo <= segundo_primo ) {
i f ( ( primer_primo + segundo_primo ) < numero) {
primer_primo = buscaPrimoProximo ( primer_primo ,
numero) ;
} e l s e i f ( ( primer_primo + segundo_primo ) > numero) {
segundo_primo = buscaPrimoAnterior ( segundo_primo ) ;
} else {
cout << primer_primo << " + " << segundo_primo <<
endl ;
primer_primo = buscaPrimoProximo ( primer_primo ,
numero) ;
segundo_primo = buscaPrimoAnterior ( segundo_primo ) ;
}
}
cout << " Terminado ! " << endl ;
return 1;
22
23
24
25
26
27
28
29
30
31
32
33
34
35
}
36
37
38
39
40
41
42
i n t buscaPrimoAnterior ( i n t n ) {
n−−;
while ( ! esPrimo ( n ) && ( n > 2) ) {
n−−;
}
return n ;
1.5 Conjetura de Goldbach
43
}
44
45
46
47
48
49
50
51
i n t buscaPrimoProximo ( i n t n , i n t max) {
n++;
while ( ! esPrimo ( n ) && ( n < max) ) {
n++;
}
return n ;
}
52
53
54
55
56
57
58
59
60
bool esPrimo ( i n t n ) {
f o r ( i n t i = 2 ; i < n ; i ++) {
i f ( ( n % i ) == 0) {
return false ;
}
}
r e t u r n t ru e ;
}
57
2. Soluciones Divisores
2.1.
Divisores consecutivos
Solución: Divisores consecutivos
1
2
#include < s t d l i b . h>
#include <iostream >
3
4
using namespace std ;
5
6
7
8
9
i n t main ( i n t argc , char ∗argv [ ] ) {
bool encontrado = f a l s e ;
i n t numero = 0 , d i v i s o r , l i m i t e ;
l i m i t e = a t o i ( argv [ 1 ] ) ;
10
11
do {
12
numero++;
divisor = 1;
do {
i f (numero % d i v i s o r == 0) {
i f ( d i v i s o r == l i m i t e ) encontrado = tr ue ;
d i v i s o r ++;
} else {
break ;
}
} while ( ! encontrado ) ;
} while ( ! encontrado ) ;
cout << " E l numero : " << numero
<< " es d i v i s i b l e por todos l o s enteros entre 1 y "
<< l i m i t e << endl ;
r e t u r n EXIT_SUCCESS ;
13
14
15
16
17
18
19
20
21
22
23
24
25
26
}
Capítulo 2. Soluciones Divisores
60
2.2.
Números amigos
Solución: Numeros amigos
1
2
3
#include < s t d l i b . h>
#include <iostream >
#include <math . h>
4
5
using namespace std ;
6
7
8
bool amigo( i n t ) ;
i n t sumaDivisores ( i n t ) ;
9
10
11
12
13
14
15
16
17
18
19
i n t main ( i n t argc , char ∗argv [ ] ) {
int limite ;
l i m i t e = a t o i ( argv [ 1 ] ) ;
f o r ( i n t numero = 1 ; numero <= l i m i t e ; numero++) {
i f (amigo(numero) ) {
cout << numero << " " << sumaDivisores (numero) <<
endl ;
}
}
r e t u r n EXIT_SUCCESS ;
}
20
21
22
23
24
25
26
27
28
29
30
31
bool amigo( i n t numero) {
i n t suma1 , suma2 ;
suma1 = sumaDivisores (numero) ;
suma2 = sumaDivisores (suma1) ;
i f (suma1 == suma2) r e t u r n f a l s e ;
i f (numero == suma2 && numero < suma1) {
r e t u r n t ru e ;
} else {
return false ;
}
}
32
33
34
35
36
37
38
i n t sumaDivisores ( i n t numero) {
i n t sum = 1 ;
f o r ( i n t i = 2 ; i <= s q r t (numero) ; i ++)
i f (numero % i == 0) sum += ( i + numero / i ) ;
r e t u r n sum ;
}
2.3.
Números perfectos
Solución: Numeros perfectos
1
2
3
#include <iostream >
#include < b i t s e t >
#include <cmath>
4
5
#define LARGO 64
6
7
using namespace std ;
8
9
bool EsPrimo ( i n t ) ;
10
11
12
i n t main ( i n t argc , char ∗argv [ ] ) {
int i , j , k;
2.4 Números deficientes, abundantes y perfectos
b i t s e t <LARGO> b i n a r i o ;
f o r ( i = 2 ; i < LARGO / 2 + 2 ; ++ i ) {
i f ( EsPrimo ( i ) ) {
f o r ( j = i − 1 ; j < i ∗ 2 − 1 ; ++ j ) {
binario [ j ] = 1;
}
cout << b i n a r i o << " " << b i n a r i o . to_ulong ( ) <<
endl ;
}
binario = 0;
}
return 0;
13
14
15
16
17
18
19
20
21
22
23
24
}
25
26
27
28
29
30
31
32
33
34
35
36
bool EsPrimo ( i n t numero) {
int raiz ;
r a i z = ( i n t ) s q r t (numero) ;
i f (numero == 2 || numero == 3) r e t u r n tr ue ;
f o r ( i n t i = 2 ; numero % i && i <= r a i z ; i ++) {
i f ( i == r a i z ) {
r e t u r n t ru e ;
}
}
return false ;
}
2.4.
Números deficientes, abundantes y perfectos
Solución: Números deficientes, abundantes y perfectos
1
2
3
4
#include < s t d l i b . h>
#include <iostream >
#include <math . h>
5
6
using namespace std ;
7
8
9
i n t sumaDivisores ( i n t ) ;
i n t tipoNumero ( i n t ) ;
10
11
12
13
14
15
i n t main ( i n t argc , char ∗argv [ ] ) {
i n t limite , tipo ;
i n t deficientes = 0;
i n t perfectos = 0 ;
i n t abundantes = 0 ;
16
17
l i m i t e = a t o i ( argv [ 1 ] ) ;
18
19
20
21
22
23
24
25
26
27
28
29
30
f o r ( i n t numero = 1 ; numero <= l i m i t e ; numero++) {
t i p o = tipoNumero (numero) ;
switch ( t i p o ) {
case 1 :
d e f i c i e n t e s ++;
break ;
case 2 :
perfectos ++;
break ;
case 3 :
abundantes++;
break ;
61
Capítulo 2. Soluciones Divisores
62
default :
break ;
31
32
}
}
cout << d e f i c i e n t e s << " " << perfectos << " " <<
abundantes << endl ;
33
34
35
36
r e t u r n EXIT_SUCCESS ;
37
38
}
39
40
41
42
43
44
45
46
47
48
49
i n t tipoNumero ( i n t numero) {
i f ( sumaDivisores (numero) < numero) {
return 1;
} e l s e i f ( sumaDivisores (numero) == numero) {
return 2;
} e l s e i f ( sumaDivisores (numero) > numero) {
return 3;
}
return 0;
}
50
51
52
53
54
55
56
i n t sumaDivisores ( i n t numero) {
i n t sum = 1 ;
f o r ( i n t i = 2 ; i <= s q r t (numero) ; i ++)
i f (numero % i == 0) sum += ( i + numero / i ) ;
r e t u r n sum ;
}
2.5.
Congruentes con módulo 42
Solución: Congruentes con modulo 42
1
#include <iostream >
2
3
using namespace std ;
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
i n t main ( i n t argc , const char ∗argv [ ] ) {
i n t i , j , r e s t o i , r e s t o j , contador = 0 ;
f o r ( i = 100; i < 1000; i ++) {
r e s t o i = i % 42;
f o r ( j = 100; j < 1000; j ++) {
r e s t o j = j % 42;
i f ( r e s t o i == r e s t o j && i != j ) {
contador ++;
cout << i << " " << j << endl ;
}
}
}
i f ( contador % 42 == 0) {
cout << contador << " es d i v i s i b l e por 42 " << endl ;
}
return 0;
}
3. Soluciones Especiales
3.1.
Número de Hardy-Ramanujan
Solución: Número de Hardy-Ramanujan
1
2
3
#include < s t d i o . h>
#include <iostream >
#include <math . h>
4
5
using namespace std ;
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
i n t main ( i n t argc , const char ∗argv [ ] ) {
i n t criba [2000000] = { 0 } ;
i n t cuboi , cuboj , indice , contador = 0 ;
f o r ( i n t i = 1 ; i < 100; i ++) {
cuboi = pow( i , 3) ;
f o r ( i n t j = 1 ; j < i ; j ++) {
cuboj = pow( j , 3) ;
indice = cuboi + cuboj ;
criba [ indice ] + + ;
}
}
f o r ( i n t k = 0 ; k < 2000000; k ++) {
i f ( criba [ k ] > 1) {
contador ++;
std : : cout << " numero : " << k << " tiene " << criba
[ k ] << std : : endl ;
}
}
std : : cout << " E x i s t e n : " << contador << std : : endl ;
return 0;
}
Capítulo 3. Soluciones Especiales
64
3.2.
Números narcicistas
Solución: Números narcicistas
1
2
3
#include < s t d i o . h>
#include <iostream >
#include <math . h>
4
5
#define P 7
6
7
using namespace std ;
8
9
10
long i n t potencia ( i n t , i n t ) ;
long i n t v e r i f i c a r ( i n t ) ;
11
12
13
14
15
16
17
18
19
i n t main ( void ) {
f o r ( i n t i = pow( 1 0 , P − 1) ; i < pow( 1 0 , P ) ; i ++) {
i f ( v e r i f i c a r ( i ) == i ) {
cout << i << endl ;
}
}
return 0;
}
20
21
22
23
24
25
26
27
long i n t v e r i f i c a r ( i n t i ) {
i f ( i > 9) {
r e t u r n v e r i f i c a r ( i / 10) + v e r i f i c a r ( i % 10) ;
} else {
r e t u r n pow( i % 10 , P ) ;
}
}
3.3.
Cubos de nicomaco
Solución: CUbos de nicomaco
1
2
#include < s t d i o . h>
#include <iostream >
3
4
using namespace std ;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
i n t main ( ) {
i n t i , j , resultado , impar , numero ;
f o r (numero = 1 ; numero < 1 0 ; numero++) {
resultado = 0 ;
impar = numero ∗ (numero − 1) ;
f o r ( i = 1 , j = 1 ; j <= numero ; i += 2 , j ++) {
resultado += impar + i ;
cout << " + " << impar + i ;
}
cout << " = " << numero << " ^3 "
<< " = " << resultado << " " << endl ;
}
}
3.4 Números de Lychrel
3.4.
Números de Lychrel
Solución: Números de Lychrel
1
2
#include <cstdio >
#include <iostream >
3
4
using namespace std ;
5
6
7
long long i n t i n v e r t i r I n t ( long long i n t ) ;
long long i n t buscarLychrel ( long long i n t ) ;
8
9
10
11
12
13
14
i n t main ( i n t argc , const char ∗argv [ ] ) {
f o r ( long long i n t numero = 1 0 ; numero < 300; numero++) {
i f ( buscarLychrel (numero) == 0) {
std : : cout << numero << " " << buscarLychrel (numero
) << std : : endl ;
}
}
15
return 0;
16
17
}
18
19
20
21
22
23
24
25
26
27
long long i n t i n v e r t i r I n t ( long long i n t numero) {
long long i n t i n v ;
inv = 0;
while (numero > 0) {
i n v = i n v ∗ 10 + (numero % 10) ;
numero /= 1 0 ;
}
return inv ;
}
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
long long i n t buscarLychrel ( long long i n t numero) {
bool encontrado = f a l s e ;
long long i n t i n v e r t i d o ;
i n t contador = 0 ;
while ( ! encontrado ) {
contador ++;
i n v e r t i d o = i n v e r t i r I n t (numero) ;
i f (numero == i n v e r t i d o ) {
return invertido ;
} else {
i f ( contador > 40) {
return 0;
}
numero = numero + i n v e r t i d o ;
}
}
}
3.5.
Constante de Kaprekar
Solución: Constante de Kaprekar
1
2
3
#include <algorithm >
#include <iostream >
#include <sstream >
4
5
using namespace std ;
65
Capítulo 3. Soluciones Especiales
66
6
7
8
string itos ( int ) ;
i n t kaprekar ( i n t ) ;
9
10
11
12
13
14
15
16
17
18
19
i n t main ( i n t argc , char ∗argv [ ] ) {
int n;
cout << " Ingrese un numero con cuatro c i f r a s d i f e r e n t e s : "
;
cin >> n ;
while ( n != 6174) {
n = kaprekar ( n ) ;
}
cout << n ;
return 0;
}
20
21
22
23
24
25
26
s t r i n g i t o s ( i n t n) {
stringstream s s ;
s s << n ;
string s t r = ss . s t r () ;
return s t r ;
}
27
28
29
30
31
32
33
34
35
36
37
38
39
i n t kaprekar ( i n t n ) {
string str , invstr ;
i n t num, invnum ;
s t r = i t o s (n) ;
invstr = str ;
s o r t ( s t r . begin ( ) , s t r . end ( ) ) ;
std : : s o r t ( i n v s t r . begin ( ) , i n v s t r . end ( ) , std : : greater < i n t
>() ) ;
num = a t o i ( s t r . c _ s t r ( ) ) ;
invnum = a t o i ( i n v s t r . c _ s t r ( ) ) ;
cout << invnum << "−" << num << " = " << invnum − num <<
endl ;
r e t u r n invnum − num;
}
4. Soluciones Misceláneas
4.1.
Suma de consecutivos
Solución: Suma de consecutivos
1
2
#include < s t d i o . h>
#include <iostream >
3
4
using namespace std ;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
i n t main ( void ) {
i n t i = 10 , j = 1 , k ;
bool encontrado ;
while ( ! encontrado ) {
i ++;
k = i;
while ( k % j == 0) {
k ++;
j ++;
i f ( j == 10) {
encontrado = t ru e ;
}
}
19
j = 1;
}
f o r ( i n t l = 0 ; l < 9 ; l ++) {
std : : cout << i + l << std : : endl ;
}
return 0;
20
21
22
23
24
25
26
}
Capítulo 4. Soluciones Misceláneas
68
4.2.
Cuadrados invertidos
Solución: Cuadrados invertidos
1
2
#include < s t d i o . h>
#include <iostream >
3
4
using namespace std ;
5
6
long long i n t i n v e r t i r I n t ( long long i n t ) ;
7
8
9
10
11
12
13
14
15
16
17
18
i n t main ( i n t argc , const char ∗argv [ ] ) {
long long i n t i , i n v e r t i d o ;
f o r ( i = 1 0 ; i < 10000000; i ++) {
invertido = i n v e r t i r I n t ( i ) ;
i f ( ( i ∗ i ) == i n v e r t i r I n t ( i n v e r t i d o ∗ i n v e r t i d o ) ) {
std : : cout << i << " " << i ∗ i << " " << i n v e r t i d o
<< " "
<< i n v e r t i d o ∗ i n v e r t i d o << std : : endl ;
}
}
return 0;
}
19
20
21
22
23
24
25
26
27
28
long long i n t i n v e r t i r I n t ( long long i n t numero) {
long long i n t i n v ;
inv = 0;
while (numero > 0) {
i n v = i n v ∗ 10 + (numero % 10) ;
numero /= 1 0 ;
}
return inv ;
}
4.3.
Distribución de raices digitals
Solución: Distribución de raices digitals
1
2
#include <iostream >
#include < s t d i o . h>
3
4
using namespace std ;
5
6
int raizdigital ( int ) ;
7
8
9
10
i n t main ( i n t argc , const char ∗argv [ ] ) {
i n t entero = 0 , i ;
i n t digitos [10] = { 0 } ;
11
f o r ( i = 1000; i < 10000; i ++) {
digitos [ r a i z d i g i t a l ( i ) ]++;
}
12
13
14
15
f o r ( i = 0 ; i < 1 0 ; i ++) {
cout << i << " " << d i g i t o s [ i ] << endl ;
}
return 0;
16
17
18
19
20
}
21
22
i n t r a i z d i g i t a l ( i n t numero) { r e t u r n 1 + ( ( numero − 1) % 9) ; }
4.4 Suma de digitos a la cuarta
4.4.
Suma de digitos a la cuarta
Solución: Suma de digitos a la cuarta
1
2
#include <iostream >
#include <cmath>
3
4
using namespace std ;
5
6
i n t potenciaDigitos ( i n t ) ;
7
8
9
10
11
12
13
i n t main ( i n t argc , const char ∗argv [ ] ) {
f o r ( i n t i = 0 ; i < 10000; i ++) {
i f ( i == potenciaDigitos ( i ) ) {
std : : cout << i << " " << potenciaDigitos ( i ) << std
: : endl ;
}
}
14
return 0;
15
16
}
17
18
19
20
21
22
23
24
25
26
27
i n t potenciaDigitos ( i n t n ) {
int digit ;
i n t sumador = 0 ;
do {
d i g i t = n % 10;
sumador += pow( d i g i t , 5) ;
n /= 1 0 ;
} while ( n > 0) ;
r e t u r n sumador ;
}
4.5.
Conejetura de Collatz
Solución: Conjetura de Collatz
1
#include <iostream >
2
3
using namespace std ;
4
5
6
int invertirInt ( int ) ;
i n t reducir ( i n t ) ;
7
8
9
10
11
12
13
14
15
16
17
i n t main ( i n t argc , char ∗argv [ ] ) {
f o r ( i n t i = 100; i < 1000; ++ i ) {
i n t interacciones = r e d u c i r ( i ) ;
i n t invertido = i n v e r t i r I n t ( i ) ;
i f ( ( interacciones == i n v e r t i d o ) && ( i n v e r t i r I n t (
i n v e r t i d o ) == i ) ) {
cout << i << " = " << interacciones << endl ;
}
}
return 0;
}
18
19
20
21
22
i n t r e d u c i r ( i n t numero) {
i n t j = numero , k = 0 ;
while ( j != 1) {
i f ( j % 2 == 0) {
69
Capítulo 4. Soluciones Misceláneas
70
j /= 2 ;
k ++;
} else {
j = 3 ∗ j + 1;
k ++;
}
23
24
25
26
27
28
}
return k ;
29
30
31
}
32
33
34
35
36
37
38
39
40
41
i n t i n v e r t i r I n t ( i n t numero) {
long long i n t i n v ;
inv = 0;
while (numero > 0) {
i n v = i n v ∗ 10 + (numero % 10) ;
numero /= 1 0 ;
}
return inv ;
}
4.6.
Multiplicación Etíope
Solución: Multiplicacion Etíope
1
#include <iostream >
2
3
using namespace std ;
4
5
6
7
8
i n t doble ( i n t ) ;
i n t medio( i n t ) ;
bool espar ( i n t ) ;
i n t multiplicacionetiope ( i n t , i n t ) ;
9
10
11
12
13
14
15
16
17
18
i n t main ( i n t argc , char ∗argv [ ] ) {
i n t multiplicando , m u l t i p l i c a d o r ;
cout << " Ingrese multiplicando : " ;
cin >> multiplicando ;
cout << " Ingrese m u l t i p l i c a d o r : " ;
cin >> m u l t i p l i c a d o r ;
cout << multiplicacionetiope ( multiplicando , m u l t i p l i c a d o r )
<< endl ;
return 0;
}
19
20
i n t doble ( i n t numero) { r e t u r n numero << 1 ; }
21
22
i n t medio( i n t numero) { r e t u r n numero >> 1 ; }
23
24
bool espar ( i n t numero) { r e t u r n (numero & 1) == 0 ; }
25
26
27
28
29
30
31
32
33
i n t multiplicacionetiope ( i n t multiplicando , i n t m u l t i p l i c a d o r )
{
i n t resultado = 0 ;
while ( multiplicando > 0) {
i f ( ! espar ( multiplicando ) ) {
resultado += m u l t i p l i c a d o r ;
cout << multiplicando << " " << m u l t i p l i c a d o r <<
endl ;
}
multiplicando = medio( multiplicando ) ;
4.7 Conjetura de Euler
m u l t i p l i c a d o r = doble ( m u l t i p l i c a d o r ) ;
}
r e t u r n resultado ;
34
35
36
37
}
4.7.
Conjetura de Euler
Solución: Conjetura de Euler
1
2
3
4
#include <iostream >
#include <cmath>
#include <vector >
#define MAX 250
5
6
using namespace std ;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
i n t main ( i n t argc , char ∗argv [ ] ) {
std : : vector <double> potencias ;
double suma = 0 ;
i n t i n d i c e i , i n d i c e j , indicek , i n d i c e l , indicem = 0 ;
f o r ( i n t i = 1 ; i < MAX; ++ i ) {
potencias . push_back (pow( i , 5) ) ;
}
f o r ( std : : vector <double > : : i t e r a t o r i = potencias . begin ( ) ;
i != potencias . end ( ) ; ++ i ) {
f o r ( std : : vector <double > : : i t e r a t o r j = potencias . begin
() ;
j != potencias . end ( ) ; ++ j ) {
f o r ( std : : vector <double > : : i t e r a t o r k = potencias .
begin ( ) ;
k != potencias . end ( ) ; ++k ) {
f o r ( std : : vector <double > : : i t e r a t o r l =
potencias . begin ( ) ;
l != potencias . end ( ) ; ++ l ) {
f o r ( std : : vector <double > : : i t e r a t o r m =
potencias . begin ( ) ;
m != potencias . end ( ) ; ++m) {
suma = ∗ i + ∗ j + ∗k + ∗ l ;
i n d i c e i = distance ( potencias . begin ( ) ,
i ) + 1;
i n d i c e j = distance ( potencias . begin ( ) ,
j ) + 1;
indicek = distance ( potencias . begin ( ) ,
k ) + 1;
i n d i c e l = distance ( potencias . begin ( ) ,
l ) + 1;
indicem = distance ( potencias . begin ( ) ,
m) + 1 ;
i f (suma == ∗m) {
std : : cout << i n d i c e i << "−" <<
i n d i c e j << "−"
<< indicek << "−" <<
i n d i c e l << " = "
<< indicem << std : : endl ;
return 0;
}
std : : cout << " suma : " << suma << " i = "
<< i n d i c e i
<< " j = " << i n d i c e j << " k= "
<< indicek
71
Capítulo 4. Soluciones Misceláneas
72
<< " l = " << i n d i c e l << " m= "
39
<< indicem
<< " = " << ∗m << std : : endl ;
40
}
41
}
42
43
}
44
}
}
return 0;
45
46
47
}
5. Soluciones criptográfia
5.1.
Cifrado Cesar
Solución: Cifrado Cesar
1
2
#include <iostream >
#include < s t r i n g . h>
3
4
using namespace std ;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void codifica ( i n t n , s t r i n g& cadena) {
f o r ( i n t i = 0 ; i < cadena . length ( ) ; i ++) {
i f (cadena[ i ] >= ’a ’ && cadena[ i ] <= ’ z ’ ) {
i f (cadena[ i ] + n > ’ z ’ ) {
cadena[ i ] = ’a ’ − ’ z ’ + cadena[ i ] +
} e l s e i f (cadena[ i ] + n < ’a ’ ) {
cadena[ i ] = ’ z ’ − ’a ’ + cadena[ i ] +
} else {
cadena[ i ] += n ;
}
} e l s e i f (cadena[ i ] >= ’A’ && cadena[ i ] <=
i f (cadena[ i ] + n > ’ Z ’ ) {
cadena[ i ] = ’A’ − ’ Z ’ + cadena[ i ] +
} e l s e i f (cadena[ i ] + n < ’A’ ) {
cadena[ i ] = ’ Z ’ − ’A’ + cadena[ i ] +
} else {
cadena[ i ] += n ;
}
}
}
}
n − 1;
n + 1;
’Z ’ ) {
n − 1;
n + 1;
27
28
void descodifica ( i n t n , s t r i n g& cadena) { codifica(−n , cadena)
; }
29
30
31
32
33
i n t main ( ) {
s t r i n g cadena ;
int n;
cout << " Introduce e l mensaje a c o d i f i c a r " << endl ;
Capítulo 5. Soluciones criptográfia
74
g e t l i n e ( cin , cadena) ;
cout << " Introduce e l numero de desplazamiento deseado " <<
endl ;
cin >> n ;
codifica ( n , cadena) ;
cout << cadena << endl ;
descodifica ( n , cadena) ;
cout << cadena << endl ;
34
35
36
37
38
39
40
41
}
5.2.
Cifrado por transposición
Solución: Cifrado por transposición
1
2
#include <iostream >
#include < s t r i n g >
3
4
using namespace std ;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
i n t main ( i n t argc , char ∗argv [ ] ) {
s t r i n g cadena ;
i n t i , j , clave ;
cout << " Ingrese l a cadena : " ;
g e t l i n e ( cin , cadena) ;
cout << " Ingrese l a clave : " ;
cin >> clave ;
cadena . i n s e r t (cadena . end ( ) , clave ∗ clave − cadena . s i z e ( ) ,
’ ’) ;
f o r ( i = 0 ; i < clave ; ++ i ) {
f o r ( j = 0 ; j < clave ; ++ j ) {
cout << cadena[ i ∗ clave + j ] ;
}
cout << endl ;
}
f o r ( i = 0 ; i < clave ; ++ i ) {
f o r ( j = 0 ; j < clave ; ++ j ) {
cout << cadena[ i + j ∗ clave ] ;
}
}
return 0;
}
5.3.
Cifrado XOR
Solución: Cifrado XOR
1
#include <iostream >
2
3
using namespace std ;
4
5
6
7
8
9
10
s t r i n g codificarDecodificar ( s t r i n g texto , char clave ) {
s t r i n g output = texto ;
f o r ( i n t i = 0 ; i < texto . s i z e ( ) ; i ++) output [ i ] = texto [ i
] ^ clave ;
r e t u r n output ;
}
5.4 Cifrado Vigenere
11
12
13
14
15
16
17
18
19
20
21
22
23
i n t main ( i n t argc , const char∗ argv [ ] ) {
char clave ;
s t r i n g textoClaro ;
cout << " Ingrese e l texto a c r i f r a : " ;
g e t l i n e ( cin , textoClaro ) ;
cout << " Ingrese l a clave ( un caracter ) : " ;
cin >> clave ;
s t r i n g encriptado = codificarDecodificar ( textoClaro , clave
);
cout << " Encriptado : " << encriptado << " \n " ;
s t r i n g desencriptado = codificarDecodificar ( encriptado ,
clave ) ;
cout << " Desencriptado : " << desencriptado << " \n " ;
return 0;
}
5.4.
Cifrado Vigenere
Solución: Cifrado vigenere
1
2
3
#include <iostream >
#include < c s t r i n g >
#include <algorithm >
4
5
using namespace std ;
6
7
8
9
10
11
12
13
14
15
16
17
18
void vigenere_encripta ( std : : s t r i n g& cadena, std : : s t r i n g clave )
{
transform (cadena . begin ( ) , cadena . end ( ) , cadena . begin ( ) , : :
toupper ) ;
transform ( clave . begin ( ) , clave . end ( ) , clave . begin ( ) , : :
toupper ) ;
i n t j = 0;
f o r ( i n t i = 0 ; i < cadena . length ( ) ; i ++) {
i f ( isalpha (cadena[ i ] ) ) {
cadena[ i ] += clave [ j ] − ’A’ ;
i f (cadena[ i ] > ’ Z ’ ) cadena[ i ] += − ’ Z ’ + ’A’ − 1 ;
}
j = j + 1 == clave . length ( ) ? 0 : j + 1 ;
}
}
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void vigenere_desencripta ( std : : s t r i n g& cadena, std : : s t r i n g
clave ) {
transform (cadena . begin ( ) , cadena . end ( ) , cadena . begin ( ) , : :
toupper ) ;
transform ( clave . begin ( ) , clave . end ( ) , clave . begin ( ) , : :
toupper ) ;
i n t j = 0;
f o r ( i n t i = 0 ; i < cadena . length ( ) ; i ++) {
i f ( isalpha (cadena[ i ] ) ) {
cadena[ i ] = cadena[ i ] >= clave [ j ]
? cadena[ i ] − clave [ j ] + ’A’
: ’A’ + ( ’ Z ’ − clave [ j ] + cadena[ i
] − ’A’ ) + 1 ;
}
j = j + 1 == clave . length ( ) ? 0 : j + 1 ;
}
}
75
Capítulo 5. Soluciones criptográfia
76
34
35
36
37
38
39
40
41
42
43
44
45
46
i n t main ( void ) {
s t r i n g cadena( " A c e I n f i n i t y ’ s Example " ) ;
s t r i n g clave ( " Passkey " ) ;
cout << " Ingrese texto : " ;
g e t l i n e ( cin , cadena) ;
cout << " Ingrese clave : " ;
g e t l i n e ( cin , clave ) ;
vigenere_encripta (cadena, clave ) ;
cout << " Encriptado : " << cadena << std : : endl ;
vigenere_desencripta (cadena, clave ) ;
cout << " Desencriptado : " << cadena << std : : endl ;
return 0;
}
5.5.
Números romanos
Solución: Números romanos
1
2
#include <iostream >
#include < s t r i n g >
3
4
using namespace std ;
5
6
s t r i n g decaromano( i n t ) ;
7
8
9
10
11
12
13
i n t main ( ) {
i n t numerodec ;
cout << " Ingrese un entero menor a 4000: " ;
cin >> numerodec ;
cout << "Romano: " << decaromano(numerodec) << endl ;
}
14
15
16
17
18
19
20
21
22
23
24
s t r i n g decaromano( i n t v a l o r ) {
s t r i n g resultado ;
s t r u c t romanos_t {
i n t valor ;
char const ∗ numeral ;
};
s t a t i c romanos_t const romanos [ ]
1000 , "M" , 900 , "CM" , 500 ,
90 ,
"XC" , 50 , " L " , 40 ,
,
5,
"V" , 4 ,
" IV " , 1 ,
= {
"D" , 400 , "CD" , 100 , "C" ,
" XL " , 10 , " X " , 9 ,
" IX "
"I",
0,
NULL } ;
25
f o r ( romanos_t const ∗ actual = romanos ; actual−>v a l o r > 0 ;
++actual ) {
while ( v a l o r >= actual−>v a l o r ) {
resultado += actual−>numeral ;
v a l o r −= actual−>v a l o r ;
}
}
r e t u r n resultado ;
26
27
28
29
30
31
32
33
}
6. Soluciones secuencias
6.1.
Secuencia de Hamming
Solución: Secuencia de Hamming
1
2
#include <iostream >
#include < b i t s e t >
3
4
using namespace std ;
5
6
7
8
i n t main ( i n t argc , char ∗argv [ ] ) {
i n t l i m i t e , numero = 1 , i ;
b i t s e t <500> hamming ;
9
cout << " Ingrese l i m i t e : " ;
cin >> l i m i t e ;
hamming[ 1 ] = 1 ;
while (numero < l i m i t e ) {
i f (hamming[ numero ] ) {
hamming[ numero ∗ 2] = 1 ;
hamming[ numero ∗ 3] = 1 ;
hamming[ numero ∗ 5] = 1 ;
}
numero++;
}
f o r ( i = 0 ; i < l i m i t e ; ++ i ) {
i f (hamming[ i ] ) {
cout << i << " , " ;
}
}
cout << endl ;
return 0;
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
}
Capítulo 6. Soluciones secuencias
78
6.2.
Sucesión Padovan
Solución: Sucesión Padovan
1
#include <iostream >
2
3
using namespace std ;
4
5
i n t padovan( i n t ) ;
6
7
8
9
10
11
12
13
i n t main ( i n t argc , char ∗argv [ ] ) {
int i ;
cout << " 1 , 1 , 1 , " ;
f o r ( i = 2 ; i < 5 0 ; ++ i ) {
cout << padovan( i ) << " , " ;
}
}
14
15
16
17
18
19
20
i n t padovan( i n t n ) {
i f ( n < 2)
return 1;
else
r e t u r n padovan( n − 2) + padovan( n − 3) ;
}
6.3.
Primoriales
Solución: Primoriales
1
2
#include <iostream >
#include <cmath>
3
4
using namespace std ;
5
6
7
bool EsPrimo ( i n t ) ;
void cargaCriba ( i n t ∗ primos ) ;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
i n t main ( i n t argc , char ∗argv [ ] ) {
int i , j ;
long i n t primoral = 1 ;
i n t primos [ 1 0 ] ;
cargaCriba ( ( i n t ∗ ) primos ) ;
f o r ( i = 0 ; i < 1 0 ; ++ i ) {
f o r ( j = 0 ; j <= i ; ++ j ) {
primoral ∗= primos [ j ] ;
}
cout << primos [ i ] << " primoral " << primoral << endl ;
primoral = 1 ;
}
return 0;
}
23
24
25
26
27
28
29
30
31
32
void cargaCriba ( i n t ∗ primos )
i n t indice = 0 , numero =
while ( indice < 10) {
numero++;
i f ( EsPrimo (numero) )
primos [ indice ] =
indice ++;
}
}
{
0;
{
numero ;
6.4 Primos absolutos
33
}
34
35
36
37
38
39
40
41
42
43
44
45
bool EsPrimo ( i n t numero) {
int raiz ;
r a i z = ( i n t ) s q r t (numero) ;
i f (numero == 2 || numero == 3) r e t u r n tr ue ;
f o r ( i n t i = 2 ; numero % i && i <= r a i z ; i ++) {
i f ( i == r a i z ) {
r e t u r n t ru e ;
}
}
return false ;
}
6.4.
Primos absolutos
Solución: Primos absolutos
1
2
3
4
5
#include
#include
#include
#include
#include
<iostream >
<algorithm >
<cmath>
<sstream >
<cstring >
6
7
using namespace std ;
8
9
bool EsPrimo ( i n t ) ;
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
i n t main ( i n t argc , char ∗argv [ ] ) {
i n t i , numero ;
bool primo ;
f o r ( i = 2 ; i < 1000; ++ i ) {
stringstream s s ;
s s << i ;
string s t r = ss . s t r () ;
s o r t ( s t r . begin ( ) , s t r . end ( ) ) ;
primo = t rue ;
i f ( EsPrimo ( i ) ) {
do {
numero = a t o i ( s t r . c _ s t r ( ) ) ;
i f ( ! EsPrimo (numero) ) {
primo = f a l s e ;
}
} while ( next_permutation ( s t r . begin ( ) , s t r . end ( ) ) )
;
i f ( primo && i == numero) {
do {
cout << s t r << " , " ;
} while ( next_permutation ( s t r . begin ( ) , s t r . end
() ) ) ;
}
}
}
cout << endl ;
return 0;
}
37
38
39
40
41
bool EsPrimo ( i n t numero) {
int raiz ;
r a i z = ( i n t ) s q r t (numero) ;
i f (numero == 2 || numero == 3) r e t u r n tr ue ;
79
Capítulo 6. Soluciones secuencias
80
f o r ( i n t i = 2 ; numero % i && i <= r a i z ; i ++) {
i f ( i == r a i z ) {
r e t u r n t ru e ;
}
}
return false ;
42
43
44
45
46
47
48
}
6.5.
Números de Harshad
Solución: Números de Harshad
1
#include <iostream >
2
3
using namespace std ;
4
5
i n t sumadigitos ( i n t ) ;
6
7
8
9
10
11
12
13
14
15
i n t main ( i n t argc , char ∗argv [ ] ) {
int i ;
f o r ( i = 1 ; i < 100; ++ i ) {
i f ( i % sumadigitos ( i ) == 0) {
cout << i << " , " ;
}
}
return 0;
}
16
17
18
19
20
21
22
23
i n t sumadigitos ( i n t n ) {
i n t sum = 0 ;
do {
sum += n % 1 0 ;
} while ( n /= 10) ;
r e t u r n sum ;
}
III
Cuentos
1
El amor de una mujer . . . . . . . . . . . . . . . . 85
2
La Mujer del Panadero . . . . . . . . . . . . . . . 89
3
Emanuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4
Kroshnak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5
Yo, mi asesino . . . . . . . . . . . . . . . . . . . . . . 101
6
La mentira . . . . . . . . . . . . . . . . . . . . . . . . . 107
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
83
Entrevistador: “Profesor, sus poemas y sus cuentos son muy bien conocidos en el extranjero, pero creo que usted no ha escrito ninguna novela. Si
es así, quisiera preguntarle si hay alguna razón específica.”
Jorge Luis Borges:
“Yo creo que hay dos razones específicas: una, mi incorregible holgazanería, y la otra, el hecho de que como no me tengo mucha confianza, me
gusta vigilar lo que escribo y, desde luego, es más fácil vigilar un cuento,
en razón de su brevedad, que vigilar una novela”
Soy un ávido lector de cuentos, me gustan por lo conciso, lo breve, lo compacto
y concentrado que son a la hora de contar una historia. En este capitulo del libro
quiero poner algunos de mis cuentos, humildemente espero poder transmitir la idea
subyacente en cada uno de ellos, hacerlo de manera entretenida y que sean de su
agrado.
1. El amor de una mujer
Es verdad, a veces me pasan cosas extrañas, pero, ¿a quien no?.
A veces veo cosas que otros no, o escucho cosas que otros no oyen, ellos dicen
que no existe, que son alucinaciones, pero yo les aseguro son incapaces de percibir la
realidad como yo lo hago.
Yo soy mas inteligente que ellos, pero ellos no se dan cuenta, dicen que estoy loco.
Mis hijos me quieren internar, dicen que mortifico a su madre con mi “problema”,
pero es su mama quien no los deja.
A veces logro engañar a mi esposa y no tomar la medicación, esto me da un
margen de unos días, a veces solo unas pocas horas, donde vuelvo a mi mundo de
números, secuencias, relaciones, teoremas, conjeturas y sobre todo primos.
Sin embargo por lo general mi esposa se da cuenta de que logre evadir las pastillas,
luego, cuando ya estoy nuevamente controlado o como ella dice “normal”, me cuenta
por ejemplo que me pase una noche varias horas hablando del número 47 y sus
propiedades, pero cuando me contó de mis conclusiones sobre este número, estando
yo lucido, obviamente me di cuenta que mis deducciones eran completamente absurdas
y ridículas.
A riesgo de someterme a vuestro escrutinio sobre mis divagaciones matemáticas
estoy escribiendo esto luego de lograr tirar las pastillas por el inodoro.
Mientras miraba una película con mi esposa en la cama mi mente divagaba como
es su costumbre por otros temas, haciéndome perder el hilo y la continuidad del
film. Apenas comenzada la película puse pausa y me dirigí a mi mujer, quien con
infinita paciencia soporta mis interrupciones para escuchar con atención, aunque se
que muchas veces lo que le cuento no es de su interés ni conoce del tema como para
poder apreciarlo, pero siempre me escucha con el más profundo silencio y atención, y
cada vez que hace alguna observación o pregunta elige cuidadosamente las palabras y
la forma en que las utiliza, para mí estas situaciones son unos de las más profundas
pruebas de amor aún después de mas veinticinco años de convivencia.
Esta vez la reflexión que compartí con ella era, como muchas otras veces sobre
números y más específicamente sobre números primos. Le dije:
-Para Russell los números no existen, no hay nada que sea un numero, y tiene
razón, porque en definitiva el número es sólo un nombre que los humanos inventamos
para denominar una agrupación caprichosa, por ejemplo, le dije, tomemos el número
5, ¿que es, sino el nombre de todos los conjuntos con 5 elementos? -Así, -acote-
86
Capítulo 1. El amor de una mujer
podríamos también ponerle nombre a todos los árboles con flores amarillas que crecen
a la orilla de un río, se podría llamar “googol”, dije, plagiando a un niño que a sus 9
años inventó ese número.
-Podemos decir que los números primos... -continué diciendo.
En este punto mi esposa no pudo disimular, aunque lo intentó su cara de “otra vez
con lo mismo”, seguí con mi reflexión.
- Los números primos son también un conjunto caprichoso -le dije-, el hombre
los cree y trata como algo especial, pero simplemente son números que no se puede
descomponer en factores distintos de la unidad y el mismo, pero analicemos esto,
tomemos por ejemplo el número treinta y uno (31), a este numero lo podemos armar
mediante la suma de varias combinaciones de números naturales, el treinta más el uno
(30+1), el veintinueve más el dos (29+2), el veintiocho más el tres (28+3)
En ese momento no pude evitar hacer una interrupción y contarle a mi señora la
anécdota de Gauss cuando a sus 10 años sumó todos los números desde el uno hasta
el cien, pero continué con mi razonamiento y le dije
-Al mismo número, treinta y uno (31) podemos también armarlo con muchas
divisiones -le explique- es decir dividiendo cada uno de sus múltiplos, por ejemplo,
sesenta y dos dividido dos (62/2) o noventa y tres dividido tres (93/3), luego, podemos
también formar el número treinta y uno mediante restas, treinta y dos menos uno (321), treinta y tres menos dos (33-2) y así sucesivamente, pero, resulta que no podemos
armar el número treinta y uno mediante la multiplicación de enteros diferentes que la
unidad y el propio treinta y uno,
-¿Es eso sorprendente? -le pregunte
Y en su mirada pude adivinar que no sabía qué responderme porque en realidad
quería responder lo que yo esperaba escuchar, no la deje en esa incómoda situación y
me auto-respondi.
-¡No! -me respondi-. ¡No tiene nada de sorprendente! es solo una condición
caprichosa de entre muchísimas que podríamos encontrar en los números, por ejemplo,
vamos a inventar los números “sobrinos”, tomemos todos los números que no se
pueden formar mediante la suma de dos números pares, es tan caprichoso y válido
como los números primos.
Pude ver el alivio en el rostro de mi esposa cuando quite la pausa de la película
y continuamos mirándola. Como ya dije, aún en ese gesto puedo ver el profundo
amor que luego de tantos años supimos cultivar, si no, díganme como seria posible
que alguien me escuche o lea diciendo estas cosas que posiblemente por la falta de
medicación no son nada más que divagaciones sin sentido.
No pasó mucho para que volviera a poner la pausa en la película, y le dije a mi
esposa.
-¿Sabes porque no todos los veranos hay chicharras? -le pregunte esta vez.
Nuevamente en su rostro se leía que estaba esperando sorprenderse o aburrirse, yo
haría mi mejor esfuerzo para que esta vez no se aburriera.
-¿Recordas cuando fuimos al campo con Ariel, Javier y Cristian y sus familias?.
Al despertar una mañana húmeda y nublada, encontramos muchos orificios en la
tierra alrededor del campamento, escuchamos el canto de las chicharras y los chicos
jugaban con sus exoesqueletos secos, que habían quedado prendidos en la corteza de
los árboles.
-Pues bien, resulta que tuvimos suerte, -le acote- pueden pasar varios años hasta
que podamos ver ese evento nuevamente.
-Esos bichos se reproducen con una frecuencia de años que es en algunos casos de
7, 13 y hasta 17 años, como ya te habrás dado cuenta se trata en todos los casos de
números primos, pero, los biólogos se preguntaban porqué era así, según una teoría
bastante aceptada entre los expertos, la chicharra tendría un parásito cuyo ciclo vital
está intentando evitar.
87
-Si el parásito tiene un ciclo vital, supongamos, de 2 años -continue diciendo-,
entonces la chicharra querría evitar encontrarse con él, por lo que tendría un ciclo
vital que no fuese par. De esta manera, si el parásito tiene un ciclo vital de 3 años,
entonces la cigarra querrá evitar un ciclo vital divisible por 3, si no el parásito y la
cigarra volverán a coincidir.
-Al fin, si quiere evitar de encontrarse con su parásito, la mejor estrategia es tener
un ciclo de vida largo -dije-, que dure un número primo de años, obviamente las
chicharras no saben contar, pero es acá donde la teoría de la evolución de Darwing
entra para explicar cómo terminaron reproduciéndose a esa frecuencia.
Termine mi relato con un ¿Que me contas?. Y ella respondió nuevamente con su
mejor cara de “Que interesante” que no me terminó de convencer.
Continuamos viendo la película, esta vez tardé menos en pulsar el botón con dos
palitos en el control remoto.
-Mira -le dije-, hablando de parásitos. ¿Sabías que las hormigas tienen un parásito
que les controlan la mente?
-No -me respondio. Me respondio
Esta vez el asombro y la curiosidad en su rostro eran evidentes y sinceros. Trataría
de no defraudarla.
-En realidad se trata de un hongo -comencé a explicarles-, que ataca unas hormigas,
creo que tailandesas, cuando una espora del hongo alcanza a una pobre hormiga
víctima se aloja en su cerebro y comienza a crecer, a medida que esto sucede, va
tomando paulatinamente el control de su cuerpo y su mente, atrofia sus músculos poco
a poco y la obliga a buscar el sol, es decir a subir lo más alto que pueda en algún
arbusto, una vez alcanzado ese punto, el pobre insecto es obligado, contra su voluntad
a aferrarse con sus mandíbulas a alguna hoja y quedarse allí hasta morir. De esta
manera el parásito se garantiza que desde ese lugar privilegiado sus nuevas esporas
tengan una mayor chance de dispersarse y alcanzar nuevas víctimas.
Esta vez la cara de mi esposa reflejaba una mezcla de repulsión y asombro. Ya
me conoce y sabe que no le estaba mintiendo, cuando miento ella se da cuenta
indefectiblemente.
Esta vez deje que la película termine, como de costumbre mi esposa ya estaba
dormida cuando eso ocurrió. A ella le gustan las comedias, dramas y de amor, pero
dice que también le gustan las de guerra y ciencia ficción sólo para hacerme compañía,
aunque no siempre lo logra.
Antes de dormir me puse a pensar, lo terrorífico del parásito, lo sorprendente de las
chicharras y los apasionante que puede resultar el mundo de los números, me dormí
pensando en levantarme al día siguiente y escribir todo esto, con la esperanza que
los números primos sean un parásito que luego de haberme infectado lleve con este
escrito sus esporas al mayor número de víctimas posibles.
2. La Mujer del Panadero
Estoy muriendo mientras escribo estas lineas, se que por mis venas la muerte va
apagando cada una de mis células. Espero que alcance el tiempo para terminar de
escribir mi historia.
Esta primavera debería cumplir 41 años. Mi vida paso sin mayores sobresaltos
soy un hombre común que vivió una vida común. Durante ese tiempo, hubieron dos
oportunidades en las que creí haber encontrado a la mujer ideal.
Rosana, tenia todo lo que buscaba en una mujer, menos interés por mi. O por lo
menos la primera vez que mi vida se cruzo con la suya. Tupido pelo negro y grueso,
lacio, que caía a los costados de su rostro con pesadez, su piel era trigueña y sus largas
piernas seguían con armonía la curva que su cintura y su cadera parecían empeñarse
en esforzar al máximo, en su cuello delgado e interminable se podía observar a trasluz
un suave bello aterciopelado, que se iba diluyendo al aproximarse a sus mejillas, sus
ojos eran negros, grandes y profundos, le daban a su mirada un aspecto extraño, como
si estuviera siempre pensativa.
La vida no tiene un sentido, quienes lo buscan solo pierden su tiempo, solo hay que
vivirla. Buscar la verdad de las cosas es algo que tiene a la humanidad entretenida desde
sus orígenes, incluso desde antes que los primeros homínidos intentaran comprender
los fenómenos climáticos, en el rigor estricto de las matemáticas la verdad es un bien
mezquino, en la búsqueda de la verdad hubieron quienes se apoyaron en creencias
o especulaciones por ejemplo las religiones o la filosofía. Pero hubo y hay quienes
tratan de abordar su búsqueda mediante la razón, desde tiempos de Euclides hicimos
intentos sistemáticos de inferir las reglas que rigen nuestro universo, y sobre esas
reglas construir una estructura que de sustento al saber. Pero, ¿que pasa si la verdad
no se puede comprobar?. ¿De que sirve el saber si no existe certeza?.
Kurt Godel nació en Austria, Hungria el 28 de abril, 1906, actualmente la República Checa. Fue hijo de un comerciante textil su madre Marianne fue la que hizo
de el lo que fue, siempre cercana a el, aun a la distancia se mantenían comunicados
mediante correo. En su núcleo de familiares y amigos cercanos lo llamaban desde
niño Herr Warum (Sr. Por qué) debido a su insaciable curiosidad. Fue un niño feliz en
una familia de clase media acomodada.
Rosana, era estudiante en el mismo colegio que yo, un año adelantada, durante
el tiempo que compartimos en la secundaria trate infructuosamente de lograr que me
tuviera en cuenta, de llamar su atención, en esa época era yo un adolescente deportista,
90
Capítulo 2. La Mujer del Panadero
destacado también en los estudios, muchas mujeres de mi edad se sentían atraídas por
mi, ella no. Cuando ella termino el cursado sus estudios perdí su rastro, mi quinto
año transcurrió monótono, termine mis estudios secundarios y ya en la universidad
busque a Rosana en cada mujer que tuve, nunca la encontré. Esta búsqueda duraría
toda mi vida. Solo unas pocas semanas al final de mis días la encontré, pero no me
quiero adelantar en este relato, solo temo no llegar a terminarlo porque como ya les
dije estoy muriendo y se que solo me quedan unos minutos.
Termine mi doctorado en matemáticas en la Universidad de Buenos Aires, luego,
la vida me llevo a lejanos países donde desarrolle mi carrera, me hice conocido, obtuve
cierta fama demostrando algunos teoremas de menor importancia, luego me empecine
en refutar a Godel, nunca lo logre, aun hoy estoy convencido que se equivoca, pero su
lógica permanece fuera de mi alcance.
Volví a mi pueblo natal, Tilcara, en el norte Argentino, lo recordaba apacible,
silencioso, con calles de tierra y empedradas, rodeado de cerros poblados de cactus.
Seguía igual, pero a la vez diferente, el progreso había echo su trabajo. Me instale
en la vieja casa de mis bisabuelos, durante unos meses estuve dedicado a restaurarla,
había acumulado unos ahorros como profesor que permitiría que me dedique por unos
años a seguir luchando contra la incompletitud de Godel.
En esos meses mi mundo fue solo un par de cientos de metros a la redonda de la
vieja casona, tenia todo lo necesario a no mas de dos cuadras de distancia, el almacén
donde me aprovisionaba de sardinas enlatadas, pan, fiambre y todo lo que compone
la dieta de un hombre que solitario, la farmacia donde comprar mis remedios, una
carnicería aunque como poca carne, un puesto de salud al que le rehuía, una peluquería
que lucia un extraño cartel que rezaba, .El peluquero de este pueblo atiende solo a
aquellos hombres que no se cortan el pelo a sí mismos", curiosamente y a pesar de
ser el único peluquero del pueblo siempre tenia su cabello correctamente recortado,
había también un ciber-cafe que me mantenía cercano al viejo mundo y un bar con
mesa de snooker donde pasaba un par de horas entre que el sol se perdía tras los cerros
hasta que la oscuridad cubría el caserío, jugaba solo, trazando trayectorias imaginarias
que no siempre las bolas consentían cumplir, perfeccione en ese tiempo bastante mi
juego, deje de pensar y calcular y le di paso a la intuición, a los cálculos no evidentes
para que rigieran mi destreza, eso me convirtió en el jugador que nunca fui, el que
quise ser ante cada derrota que sufrí con mis amigos, en todo ese tiempo en Tilcara
nunca acepte un desafío, mis partidos eran contra un jugador invisible, como en mi
contienda con el celebre matemático.
El viejo que atendía el bar, una de las pocas personas con las que ocasionalmente
cruzaba algunas palabras, murió una tarde, sentado detrás del mostrador, mientras
yo jugaba uno de mis partidos siempre inconclusos. Ninguno de los presentes nos
dimos cuenta, parecía dormir como lo hacia a veces, sentado, confiado en la calidad
de gente que habita los pueblos como Tilcara. Deje mi pago en el mostrador y me
fui, no quise despertarlo, no habría podido. Al otro día me entere que había muerto
el Yaveño, como le decían. En ese momento no se me habría ocurrido pensar que la
muerte no se conformaría con el viejo, que se quedaría en Tilcara, que tenia planes.
Ahora lo se, viene por mi.
El bar no volvió a abrir, los hijos vinieron desde San Salvador donde habían
emigrado en busca de un futuro mejor, solo estuvieron tres días para terminar con
los ritos religiosos aunque su padre fuera, según me hizo entender en esas cortas
conversaciones que teníamos, un ateo declarado. La mujer que con el vivía decidió no
abrir mas el bar, al fin de cuentas a ella nunca le gusto que el Yaveño se pasase los
días atendiendo a borrachos y hombres solitarios, eso lo hacia un hombre triste según
su apreciación.
Con la muerte del viejo dos horas de mis días quedaron sin ocupación, siempre me
gusto la vida ordenada, la seguridad que da la rutina, tenia que encontrar una forma
91
de despejar la mente como lo hacia el snooker, comencé a caminar por mi pueblo, a
reencontrarme con viejos paisajes poblados por nuevas caras, ocasionalmente alguien
me reconocía y entablábamos breves conversaciones, note que en realidad no había
cambiado tanto como parecía, la gente era la misma aunque algunos jóvenes llevaran
modernos reproductores digitales de musica o teléfonos celulares, seguían siendo los
mismos jóvenes que yo fui, hace 25 años, me vi en ellos.
En una de esas caminatas vi una columna de humo que se elevaba por detrás de
un cumulo de casas todavía de adobe a flor de piel a fuerza de las lluvias de muchos
veranos. Me puse como meta llegar hasta el, ya lo había observado con anterioridad
y era puntual tanto al comenzar como al terminar, dos veces al día. Cuando llegue
al origen, mis sospechas se confirmaron, era una panadería, el cartel, despintado y
descascarado decía "Panadería Urbano", yo conocí a un Urbano, fue mi compañero,
lo recordaba como un muchacho, bajito y regordete, receloso y callado, de nariz
aguileña aunque se podía ver en sus rasgos a sus ancestros europeos, nunca había
tenido buena relación con el, era una persona resentida, siempre a la defensiva por las
constantes burlas y bromas de la que era objeto. Mi padre solía decirme, .en todo grupo
siempre hay una víctima, mira bien, si no lo encuentras la víctima sos vos", el, urbano
siempre era la víctima, era quien buscaba cuando jugábamos a las escondidas, quien
quedaba al arco en los partidos de fútbol, sobre quien se hacían las bromas, con el nos
desquitabanos de nuestras frustraciones o hacíamos demostraciones de fuerza para
impresionar a algún rival, era el objeto de toda nuestra crueldad sin arrepentimiento.
En realidad ahora me arrepiento de no haber sido mas cruel, de no haberle echo mas
daño.
Entre con la intención de reencontrarme con el. Luego de traspasar la cortina
de cintas de plástico de la entrada principal la vi, era Rosana, los años solo habían
acentuado su belleza, ahora una mujer, se notaba que había sido madre, a su natural
belleza se había sumado la que algunas mujeres adquieren luego de parir, es como un
mensaje de la naturaleza que se esfuerza en evidenciar de que se trata de una hembra
saludable en pleno estado para la procreación, con pechos firmes y anchas caderas,
todo en perfecta armonía, mi mente entrenada en matemáticas encontró en toda ella la
proporción áurea, el número de oro, en su rostro se veía serenidad, su voz calmada y
pausada me sonaba como en aquellos días de mi primavera, pero a la vez la cadencia
del otoño se dejaba oir en sus palabras.
No me reconoció. ¿Porque habría de hacerlo?, nunca se fijo en mi. Me atendió
como si de un turista se tratara, me hablo de las bondades del pan horneado con leña,
como si yo no lo supiera la escuche con atención, saboreando cada una de las silabas
que de su boca fluían, compre unos bollos y me fui, cuando salia, en la cortina de
plástico me cruce de nuevo con ella, pero una veintena de años mas joven, era obvio
que se trataba de su hija, llegaba con unos libros y carpetas en la mano, seguramente
era estudiante, mientras me alejaba caminando por la vereda, escuche un saludo donde
la palabra “mamá” resalto sobre las otras. Si hubiera sabido el daño que mi presencia
en Tilcara ocasionaría en ese mismo instante me habría ido, hubiera huido de nuevo,
lejos, donde olvidarme de todo.
Por lo que pude leer sobre Godel y leí todo lo que encontré, hay que conocer a tu
contrincante, yo me estaba preparando para una batalla intelectual que prometía ser
dura, su infancia fue similar a la mía, nacido alemán tuvo que vivir en una sociedad
checa luego que el imperio austro-húngaro cayera al final de la Primera Guerra
Mundial, se sentía un exiliado en su tierra, tanto que cuando la Alemania nazi anexó
Austria Gödel automáticamente se convirtió en ciudadano alemán a la edad de 32
años.
Yo con sangre nativa americana, me sentía un exiliado por la cultura dominante
traída por los españoles, mi padre un indio zafrero, hoy lo digo con orgullo, fue
siempre consciente de su raza, de sus orígenes, de el aprendí eso, pero en la escuela
92
Capítulo 2. La Mujer del Panadero
me enseñaban que los indios habían estado en estas tierras antes que nosotros, como si
nosotros no fuéramos los verdaderos originarios. Hoy soy consciente de mi naturaleza,
de mi origen. No siempre fue así, en mis primeros años de púber recuerdo un incidente
muy doloroso que aun hoy me atormenta, era la semana de los estudiantes, la incipiente primavera se dejaba ver en las erupciones de nuestros rostros y en los molles
reverdecidos, eramos un grupo de amigos y amigas del colegio que caminábamos
camino a la plaza, mientras bajábamos por la calle principal vi que mi abuela subía,
caminando lentamente, con su atuendo típico de mujer colla, con su sombrero de
lana prensada, los vivos colores de su vestido y un aguayo a modo de chal hicieron
que la reconozca de lejos, llevaba en la mano una bolsa con algunos bultos, volvía
del almacén, nos cruzamos, nuestras miradas se cruzaron, ella se dio cuenta que no
debía saludarme y así lo hizo, sabia que yo no la iba a saludar, no dejaría que mis
compañeros supieran que tenia una abuela colla. Esa noche en casa no dijo nada, como
si nada hubiera pasado, me trato con el mismo cariño que todos los abuelos tratan a sus
nietos, mientras cenábamos solo hablo para contar de los lapachos en flor, mi padre
le acomodaba el chal sobre sus hombros para que la cubriera mejor protegiéndola
del frío como siempre tratando en todos sus actos que la vida no se escapara de esa
frágil mujer. Esa noche en mi cama llore hasta que me dormí, en silencio, para que
mi hermano no se diera cuenta. Extraño a mi abuela, quisiera que ahora estuviera
conmigo, pero la muerte como el nacimiento es una faena que nos toca vivir solos.
Ya de vuelta en casa, con el pan fresco de la tarde recién comprado me prepare
unos mates, saboree el pan con ansia.
Tres veces a la semana venia a casa una señora a hacer la limpieza y volver a
su lugar las cosas que yo parecía empeñarme en desacomodar. Comencé a entablar
conversaciones con ella lo único que quería era poder llegar al grado de confianza tal
que me permitiera hacer averiguaciones sobre Rosana sin despertar sospechas, así día
tras día fui conociendo su historia. Luego que yo me fuera a estudiar a Buenos Aires,
había llegado al pueblo un Gendarme que la enamoro y le hizo una hija, seguramente
la que me cruce aquella vez en la puerta de la panadería. Cuando le dieron un nuevo
destino el gendarme se fue, la abandono, la olvido, aun embarazada. Ella lo espero,
como la amante del teniente francés, el nunca volvió, como el teniente. En un pueblo
como Tilcara la vida es difícil para una madre soltera, su padre no la hablo por
mucho tiempo, solo antes de morir le pidió perdón por su silencio según contaban los
chismorreos de viejas cuenteras.
Muchos la pretendieron en el tiempo que ella solo dedico a su hija, luego supe que
la bautizo Rosa, herencia lógica de nombre. No permitió que nadie se le acercara, por
años espero lo que sabia que nunca llegaría, a aquel ignoto militar, seguramente un
bruto analfabeto llegado desde alguna provincia mesopotámica. Luego sorprendentemente la vieron acompañada de Urbano, la persona mas horrible del pueblo, avaro,
tacaño, tosco, moldeado por años de burlas y desprecios, dueño de la despensa mas
grande del pueblo, y de varias de las casas mejores ubicadas en esa pequeña orbe.
Era incomprensible, pero en realidad yo lo entendí apenas me lo contaron, se estaba
vengando de todos los hombres, no seria de nadie, solo de la persona mas horrible del
pueblo.
Godel y Albert Einstein entablaron una amistad legendaria, solían compartir largas
caminatas, el tema de sus conversaciones aun es un misterio, Einstein solía decir que,
"su propio trabajo ya no importaba mucho, que llegaba al Instituto únicamente para
tener el privilegio de caminar a casa junto a Gödel". Cuando en la UBA me encontré
por primera vez con el teorema de incompletitud me resulto en cierto modo frustrante
leer algo que sabia que es realmente importante pero era incapaz de entenderlo, por lo
que me dedique de lleno a el, perseguía a mis profesores, con preguntas al grado tal
que algunos me rehuían, me pasaba horas en la biblioteca, me aislé, perdí contacto
con mis amigos, deje de juntarme a jugar snooker los viernes a la noche para pasarlos
93
con Godel, en realidad no es tan difícil entender su teorema, lo realmente difícil es
aceptar sus consecuencias. Godel se vale de los mentirosos, o sera de los veraces? Para
demostrar simplemente que nunca llegaremos a la verdad absoluta, eso es terrible, cual
es el sentido de la existencia? , Existe un dios mezquino que como a burros nos pone
una zanahoria en nuestras narices que nunca probaremos?. El plantea que no todo
se puede demostrar, es decir que la verdad es esquiva a nuestro entendimiento, que
existen preguntas que nunca tendrán una respuesta, no solo lo plantea, lo demostró,
hasta ahora de manera irrefutable, pensemos en la siguiente afirmación, .Esta afirmación
es falsa."si es verdadera, esto significa que la afirmación es falsa, lo cual contradice
nuestra primera hipótesis. Por otra parte, si la afirmación es falsa, la afirmación debe
de ser verdadera, lo cual nos lleva de nuevo a una contradicción. El tio de Alicia y
padre de gatos sonrientes y Jabberwockys Lewis Carrol lo simplifica aun mas "Yo
estoy mintiendo.". Ahora me doy cuenta, no solo a veces no podemos tener certeza de
la verdad, esa verdad depende de si misma o de su falsedad para entrar en una eterna
recursividad sin sentido un bucle inconducente que tortura y destruye las mentes.
Varias semanas después volví por la panadería, hice un habito el ir a comprar
pan, aunque tuviera que caminar algunas cuadras, nunca me gusto caminar, es tiempo
perdido. Rosana nunca se acordó de mi, eso me dolía pero de alguna manera me daba
la impunidad necesaria para tratar de acercarme a ella y lograr alguna confianza, al
principio con diálogos casuales. Como un tonto volví a enamorarme, es extraño como
el hombre es presa de esa trampa de la evolución que es el amor, la naturaleza de
mamífero nos engaña para que cuidemos nuestra prole, para que creemos un núcleo
donde los portadores de nuestros genes puedan desarrollarse protegidos, todo motivado
por los genes egoístas que nos usan, seremos simplemente nuestra genética y nada
mas que eso?.
Yo, en esos días, solo pensaba que no tenia hijos, que estaba al borde del umbral
donde mi diabetes y edad me dejarían tiempo para criar un hijo, no quería ser un cero
darwiniano, no quería ser quien rompa la cadena de ancestros sobrevivientes. Y a ese
hijo lo quería tener con ella, quería tener una hija con su belleza, fantaseaba con un
varón de sus entrañas con mi amor por el conocimiento.
Los años y el sedentarismo me hicieron un hombre obeso, mi sobrepeso era en
realidad un problema menor hasta que la reencontré, decidí entonces recuperar en
lo posible un estado saludable. Comencé a ser mas ordenado en mis comidas, y las
caminatas a la panadería se comenzaron a notar. Pronto estaría listo para decirle quien
era yo, que había vuelto, que había recorrido el mundo, que tenia una par de metas en
la vida y que ella era parte de mi destino.
No hizo falta que le dijera quien era este extraño cliente que todas las tardes,
puntual como el humo de su chimenea llegaba a comprare el pan aun caliente. Poco
a poco fuimos acercándonos, con inocentes comentarios comencé a usar mi vieja
técnica de impresionar y seducir, fui adentrandola en temas lógicos y matemáticos
con observaciones y enigmas que ella gustaba resolver, me había puesto un apodo
.el hombre de los acertijos", apelativo que me gustaba solo porque venia de ella, de
otra persona me hubiera molestado sobremanera, aunque ya le había dicho mi nombre
que no le trajo ningún recuerdo. A veces estaba en la panadería Urbano, su marido, el
tiempo transcurrido desde la adolescencia habiame camuflado lo suficiente para que
tampoco me reconociera, la celaba, no le gustaba que hablara con los clientes, ella era
su tesoro mas preciado. Siempre sentía su ojo vigilante, creo que sospechaba algo de
mis intenciones, no era tonto, sabia que tenia un bien codiciado.
Godel era soberbio y provocativo, creía que existía una conspiración para que la
humanidad no pudiera conocer algunos de los manuscritos del genial Leibniz, en una
conversación con el economista Menger se produjo el siguiente dialogo:
- ¿Y quién podría tener interés en destruir los manuscritos de Leibniz?
- Pues está claro: los que no quieren que el ser humano sea más inteligente.
94
Capítulo 2. La Mujer del Panadero
- ¿Por qué no censurar, entonces, al irreverente librepensador Voltaire?
- ¿Acaso alguien en el mundo se ha vuelto más inteligente leyendo a Voltaire?
Rosana, pronunciar su nombre me gusta, me deleita, comenzó a contarme cosas
cada vez mas intimas, me decía que su marido no la dejaba en paz, que la controlaba
todo el tiempo, que en las noches ya en la cama matrimonial, me duele solo pensar que
dormían juntos, comenzaba a preguntarle sobre su día, al principio de manera inocente,
luego se daba cuenta que lo que en realidad quería era encontrarle inconsistencias en
su relato, para confirmar que ella le era infiel o que por lo menos estaba interesada en
otro hombre, la acosaba con inquisiciones para saber con quien había hablado, de que,
por qué se había puesto aquella blusa que dejaba entrever su figura, o buscaba en ella
olores que la delataran. Durante el día se aparecía sorpresibamente por la panadería
para controlarla, tenia emisarios que le contaban de cada movimiento de ella, había
tejido todo un sistema de vigilancia.
Finalmente sucedió, una tarde, mientras me alcanzaba el pan, su mano tomo la
mía, lo supe al instante, lo había logrado, la había seducido. Ahora las metas eran
otras, primero lograr que me ame, luego quedarme con ella, arrebatársela a Urbano.
Lentamente fue creciendo el amor de ella hacia mi, el mio ya era grande, aun así se
hizo mayor.
El nunca la dejaría ir, todo eso ya lo había pensado en mil noches de insomnio.
Tenia todo calculado, cuando ella finalmente me amara, nos escaparíamos, nos iríamos
a Europa a cualquier pequeño pueblito como Tilcara, todos los pueblos se parecen,
nunca mas sabría de nosotros, tomaríamos pocas cosas, solo lo necesario para viajar
livianos, en menos de una semana estaríamos fuera de su alcance solo ella, su hija y
yo.
El tiempo transcurrió, rápido, como pasa el tiempo que disfrutamos, solo se hacían
interminables las horas que no estaba a su lado, ahora compraba el pan a la mañana
y a la tarde, cuando urbano se iba a San Salvador para traer mercadería o hacer sus
negocios no nos separábamos. La gente comenzó a hablar, eso nos dio miedo pero
no podíamos parar, los rumores no tardaron en llegar a oídos de su celoso esposo,
comenzó a controlarla mas aun, los interrogatorios nocturnos se hicieron mas agudos,
quería saberlo todo, hasta lo que pensaba.
A veces cuando tenia que esperar que atendiera a otros clientes, la miraba, parecía
ignorarme, totalmente indiferente, yo dejaba que me adelantaran en la fila, para ser
el ultimo que atienda, para poder estar aunque sea unos segundos solo con ella y
poder mirarme en esos ojos profundos. A veces ella llegaba furtivamente a mi casa, la
oscuridad y las sombras eran cómplices, a veces se quedaba en mi cama, dormida, no
quería despertarla, dejaba que el silencio se apoderara de la habitación, para escucharla
respirar, quería sentir hasta su corazón latiendo, recostado en su pecho podría pasarme
toda la vida. Luego las primeras luces del amanecer amenazaban con delatarla, tenia
que huir rápidamente, volver a su casa antes que la gente volviera a las calles.
Un lunes tomamos la decisión, ese fin de semana urbano tenia planeado un viaje,
hacia mucho que no iba a la capital, por no dejarla sola, pero ya no podía posponer
mas su viaje, estaba sin mercadería, había desatendido sus negocios por no sacarle el
ojo de encima, pero su codicia por el dinero podía mas.
El plan era simple, apenas el partiera en su camioneta, nos encontraríamos y
saldríamos en sentido contrario, hacia Bolívia, hasta Santa Cruz, luego en avión hasta
Europa. Durante los días que nos separaban del sábado, preparamos a escondidas los
bolsos, apenas con lo necesario, Rosa estuvo de acuerdo desde el principio, nunca le
gusto el padrastro que el rencor le había dado. Mis ahorros nos permitirían vivir hasta
que nos establezcamos y pongamos algún negocio, quizás una panadería o si fuera
necesario volvería a enseñar, al fin y al cabo era algo que disfrutaba y siempre me
gusto.
El viernes a la tarde fui por ultima vez a comprar pan, urbano estaba en la panadería,
95
su camioneta en la puerta lo delataba, pensé en no entrar, pero ya me había visto y
eso solo despertaría mas sospechas, se aprestaba para viajar, cuando entre Rosana me
saludo indiferente, compre dos bollos como siempre, pero esta vez me atendió el, puse
el pan en la bolsa y me fui, no pude ni siquiera cruzar una mirada cómplice.
Godel se caso con Adele, a la cual conocía desde hacía 10 años. Los padres de
Gödel se oponían a la relación no les gustaba que se tratara de una bailarina divorciada
y seis años mayor que él. Nunca tuvieron hijos. En sus últimos años Godel enloqueció,
pensaba que había una conspiración contra el, como la de Leibniz, que lo querían
envenenar, solo confiaba en Adele, quien según el creía se exponía a ser envenenada
en pos de la vida de su esposo. Ella debía probar la comida antes que el. Cuando
ella enfermo y tuvieron que internarla el se negó a alimentarse, finalmente murió de
hambre, el escueto certificado de defunción del Hospital de Princeton, el 14 de enero
de 1978, reporta que murió de "desnutrición e inanición causadas por perturbaciones
en la personalidad".
Tome mi mate con el bollo recién comprado, aun estaba tibio, solo podía pensar
en lo felices que seriamos, recorrí por ultima vez la casa tratando revisar todo para
no olvidarme de nada importante, recogí el retrato de mi abuela que estaba sobre una
cómoda, lo metí en el bolso de mano que llevaría con los objetos mas necesarios,
pasaporte, billetera, algo de dinero, etc. Mientras salia de la cocina, un mareo me
obligo a tomarme del marco de la puerta, luego otro, y un tercero mas extenso me dejo
sentado apoyado en la mesa, de pronto me dí cuenta, Urbano me había envenenado, el
bollo que el me dio esta especialmente preparado. Como pude salí a la calle y en la
oscuridad cerrada de esa noche me apresure a llegar a la casa de Rosana, la camioneta
de Urbano aun en marcha estaba en el frente con la puerta del conductor abierta, la
puerta de la casa también estaba abierta y dejaba que la luz del interior dibujara un
trapecio en la angosta vereda y la empedrada calle, entre, el silencio era aterrador, solo
el leve tic-tac de un viejo reloj de pared marcaba como un metrónomo, con implacable
precisión, los tiempos de ese terrible desenlace, echos que iban sucediendoce como
fotogramas de una vieja película en celuloide.
De pronto al entrar a la habitación de ellos vi a urbano sentado en usa silla con
las manos colgando sin fuerzas, a los costados, de su sien un grueso hilo de sangre
llegaba hasta el cuello, en el piso un cuchillo y un revolver, de su mano derecha caían
lánguidas y escasas gotas de sangre sobre el piso, luego la vi, Rosana, tendida sobre en
el suelo, semi desnuda, aun en la muerte era hermosa, estaba ya sin vida, un charco de
sangre oscura y viscosa se filtraba por entre las maderas del piso. La había matado con
el cuchillo, para ser mas cruel, los hombres cuando matan con odio tratan de causar
dolor, a mi me enveneno, solo quería matarme. Luego el se suicido de un disparo,
no quería sufrir, quería irse lo mas rápido posible. Tres muertes, un asesino, no es
Urbano, el solo actuó como el verdadero asesino se lo ordeno, el amor es solo una
trampa, nuestra naturaleza nos hace caer en ella, la pasión nos domina, la razón cede.
Trato de pensar, que debo hacer, luego de verificar por tercera vez que Rosana
esta ya sin vida busco la forma de pedir ayuda, no puedo gritar, la fuerza me esta
abandonando, la vida se me escapa, lo siento, busco el teléfono para pedir ayuda,
lo encuentro y una voz impersonal me atiende, insiste con el saludo, callo y pienso,
decido colgar, no quiero ayuda, voy a dejar que este universo siga su curso según la
decisión de Urbano, no quiero cambiarlo, voy a morir, voy a dejar que el veneno siga
inundando mi sangre, no quiero vivir sin ella. Pienso en mi abuela, pienso en Godel,
pienso en Rosana y en una vida que no fue.
3. Emanuel
Mientras esperaba ser atendida la madre de Ema se secó la frente con un pañuelo, el
local estaba abarrotado de gente, tenia el numero 154, de pronto uno de los vendedores
presiono un pulsador y en la marquesina que colgaba del techo un 94 de letras rojas
formadas por leds se transformó en 95.
-Dale Ma, vamos a la heladería de enfrente -insistió Ema.
Y, aunque la madre, tenía el mismo deseo que el hijo, temerosa que llegara su
turno y perderlo le respondió.
-Después que nos atiendan vamos. Si perdemos el turno vamos a tener que volver
a la tarde.
El niño, ya cansado del gentío, el calor y el continuo parloteo de la gente le hizo
la siguiente propuesta.
-Vamos a la heladería y yo te aviso cuando tengamos que volver, te aseguro que
no vas a perder el turno.
La madre accedió, en realidad se resignó a tener que volver otro día sin Ema.
Cruzaron la calle, entraron a la heladería y mientras el niño miraba la imágenes de
los sabores disponibles, solo observaba las fotos, no sabía leer, la mamá intentaba en
vano ver el cartel con los números rojos a través de las dos vidrieras.
Terminaron el helado y la mamá dijo.
-Vamos, volvamos a ver si no perdimos el turno.
-No mama, todavía falta -le dijo Ema-, nos quedemos acá que esta mas fresquito.
La madre no le hizo caso, lo tomó de la mano, con la otra recogió su cartera y
cruzaron. Cuando llegaron nuevamente al local, miró hacia el panel de los turnos y
vio que recién iban por el número 142. Miró a su hijo quien le devolvió la mirada con
una clara expresión de “Viste que yo tenía razón”.
Mientras esperaban Ema le explicó a su mamá.
-Es fácil mamá, hay tres empleados que atienden, el primero, el que tiene la
corbata roja, no habla mucho, dos, tres preguntas y termina de atender a una persona,
los puntitos que están en aquel reloj se prenden y apagan 190 veces; el que tiene
corbata azul, demora mas, 234 titilar de los puntos, y la chica demora siempre mas
de 300 y menos de 400, ella es la que varía mas, con eso podemos saber cuánto van
a demorar en llegar a nuestro turno. La madre lo miraba sin prestarle atención. De
haberlo hecho se habría dado cuenta que Ema había resuelto sólo el problema de
cálculo y estimaciones de promedios cosa que a ella le tomó varias clases en el colegio.
98
Capítulo 3. Emanuel
Una vez que atendieron a la madre, por suerte le tocó el muchacho de corbata
roja, emprendieron el regreso a casa. Ema estaba contento, sabía que solo existen dos
posibles comidas que prepararía mamá ese jueves pasado mediado de mes, milanesas
con papas fritas o pizza, ambas opciones estaban entre sus comidas favoritas como en
la mayoría de los chicos.
La tendencia de convertir todo en fórmulas y cálculos creció con el correr de
los años, llegó incluso en su adolescencia a ganar dinero haciendo “adivinación y
predicción” del futuro a sus compañeros de estudio, pero pronto prefirió callar y no
resaltar su habilidad.
Pasó mucho tiempo perfeccionando su capacidad de observación y de recolección
de datos, aprendió a ver relaciones entre cosas que aparentemente no la tenían, se
daba cuenta que cosas que aparentemente estaban relacionadas en realidad no tenían
vinculación alguna o era muy débil y carecía de importancia porque su incidencia era
insignificante.
Una tarde se paso varias horas observando el vuelo de las mariposas para intentar
predecir cual seria la proxima flor donde se posaria.
Su mente estaba llena de datos, algunos, más bien muchos, todavía inservibles,
pero sabía que en cualquier momento los podría necesitar.
Pergenio naturalmente un sistema de catalogación por múltiples índices, por
ejemplo, sabía el ritmo al que crecía el césped del jardín según la estación del año,
las condiciones climáticas, el ruido circundante, las plagas e incluso el tránsito sobre
él, y este dato para muchos completamente fútil lo podía encontrar según varios
criterios, desde botánicos hasta erosivos según el tipo de calzado, pasando incluso por
condiciones de temperatura y humedad.
Poco antes de cumplir los 17 conoció a Gabriela, la había visto por primera vez
en un colectivo en el que el viajaba regularmente, sabiendo que la probabilidad de
volverla a ver en una ciudad con 8 millones de habitantes tenía un margen de error
muy alto decidió bajar y seguirla para recolectar más datos que le permitan garantizar
volver a encontrarla, era una joven de su misma edad de largo pelo lacio, tez morena y
delgada figura.
Se conocieron, se enamoraron, él no usaba su habilidad con ella.
Un día, al amanecer, terminó con la fórmula que le llevó más tiempo, comenzó a
reemplazar las variables por valores, luego de un par de semanas salió de su habitación.
Tenía el resultado. Sabia el día de su muerte.
Esa noche invito a Gabriela a pasear de la mano por la plaza, la dejo en su casa
con un beso como todos los dias, regreso a su casa, abrazo a su madre y se sentó a
esperar.
4. Kroshnak
Por fin había llegado el día, Kroshnak fue nombrado Maestro de Guerra, el mayor
rango y honor en el reino. Luego de la ceremonia en el oscuro castillo de Shanarid
se dispuso a cumplir con su primer misión, se encomendó al gran Igneo Antiguo,
conocido como “Sharna Bolker” que en lengua ignita significa “El que trae la paz” y
se dispuso a partir rumbo a su nueva aventura.
Cabalgando en su nuevo corcel de guerra llegó al altar del desierto, cerca del
campamento Orco, hizo una reverencia ante el altar apoyando una rodilla en el suelo
arenoso, allí se encontró con Lucila, la conjuradora, era un encuentro pactado, el jefe
del clan les había encomendado la misión de recuperar la reliquia robada.
Partieron raudos, sus corceles cruzaron el desierto hasta llegar al borde del río,
donde un pantano contrastaba con sus lodazales, la niebla y los árboles cargados de
musgo, sabían que debían desmontar para entrar en el, era un suicidio hacerlo a caballo
con tantos lugares propicios para una emboscada.
Lucila cuyas largas orejas normalmente yacían plegadas sobre la nuca cayendo
hasta mas abajo de los hombros de pronto las erizo, algo raro pasaba en el pantano,
eran los elfos, como siempre un grupo de arqueros que andaban de cacería, eran tres y
también llevaban un conjurador.
Había que atacar, un ignita que se precie nunca le rehuye a la pelea, Lucila invoco
unos conjuros que le dieron mayor resistencia, se puso a resguardo de las flechas y
bendijo el hacha de Kroshnak, le otorgó un hechizo que duplicó su fuerza y blindó
su armadura, Kroshnak, el caballero, atacó, sabía que si querían salir victoriosos
del combate el primero en morir de sus enemigos tenía que ser el conjurador, se
acercó y con una finta lo derribó, ya en el piso terminó con su vida de tres golpes, los
arqueros no le disparaban a él, sus flechas estaban todas destinadas a Lucila que resistía
valientemente esquivando y guarnecida detrás de los árboles y la niebla, Kroshnak
volvió a atacar, eran tres arqueros uno de ellos con un troll de guerra como mascota,
este fue el primero en morir y así uno tras otro con la ayuda de los hechizos y conjuros
invocados por Lucila, vencieron a la patrulla de elfos.
El hacha de doble filo aun chorreaba sangre, había costado salir victorioso, una
profunda herida en el brazo no dejaba de sangrar, sabia que la armadura y el hacha
tenían que ser reparados.
Retomaron el camino, era imperioso recuperar la reliquia, de pronto una voz como
venida del más allá retumbo en los oídos de Kroshnak.
100
Capítulo 4. Kroshnak
-Valentín apaga esa máquina y acostate que mañana te tenes que levantar temprano
para ir a la escuela.
Kroshnak le dijo a Lucila.
-Me tengo que ir, mi mama me mando a dormir.
-No hay problema -le contestót Lucila- yo tengo que acostar a mi hija y planchar
el guardapolvos, nos vemos mañana.
Por esa noche, la batalla había terminado.
5. Yo, mi asesino
Me llamo Horacio Carrillo soy un cosmonauta de exploración de la Avanzada Caronte
de Plutón. En el año sideral 13.865, en una nave DCP 10 clase J, comencé mi viaje
en búsqueda de vida e inteligencia exterior. Nunca llegue a mi planeta de destino
original, pero eso no es lo más extraño, sino que aunque viajaba solo, quien volvió de
ese viaje no era yo, y cuando digo no era yo no me refiero a un juego de palabras, ni a
un recurso literario, no quiero decir que había cambiado con lo aprendido ni mucho
menos que había sido infectado con algún tipo de parásito extraterrestre, digo que
literalmente el que volvió no era el mismo que el que partió, pero para poder volver
me tuve que matar y no fue suicidio, esta es mi historia.
Mientras la nave reposaba en la bahía 13 de la base de Caronte, se terminaban
con los últimos detalles de arreglos y refacciones, yo estaba junto al ingeniero de
software que instalaba la última versión de la IA que seria mi asistente de vuelo y
único compañero en todo el viaje.
Terminada la instalación se reinicia el sistema y luego de algunas comprobaciones
de hardware la IA pide se le asigne un nuevo nombre, decido seguir con el mismo
nombre que use para todas las actualizaciones. Dora. Luego continuó con la selección
de la voz, los rasgos de la personalidad, el umbral de sugerencias y demás detalles, la
voz quedó un poco acelerada, pero la prefería así.
La nave aún usaba el viejo sistema de criogenia donde era necesario reemplazar
toda la sangre del individuo por un líquido que no cristalizara al congelarse, la sangre
extraída era mantenida viva con un sistema de simulación que a su vez se encargaba
de renovarla y crear nuevos hematocritos, leucocitos y plasma que reemplazará los
que terminaban su ciclo. Algun dia tendria que actualizar completamente el sistema
de sustento de vida, pero no lo hice nunca como hacemos mientras algo aun funciona.
Este era mi decimoquinto viaje a la Zona Difusa, así llamábamos a todo sector
del universo que aún no había sido explorado. Me dormi en la capsula antes que Dora
desamarrara de la bahia y partieramos rumbo a nuestro nuevo destino.
Durante el sueño criogenico se pierde el sentido del tiempo y la velocidad de
la nave altera mas aun su percepción, fui vuelto al estado de conciencia cuando
aún no había terminado el viaje, como siempre me ocurría al despertar mi cerebro
entumecido era incapaz de ubicarse en espacio y tiempo, demoré unos pocos segundos
en recordar dónde me encontraba, saber el cuando me tomo un poco más, gire la
cabeza inclinándola hacia arriba y miré la pantalla sobre la cápsula de sustento de vida,
102
Capítulo 5. Yo, mi asesino
vi que entre mis signos vitales y demás datos relacionados con mi estado y el de la
nave figuraba el tiempo estelar relativo, decía 13.897, habíamos comenzado a medir el
tiempo en años terrestres tomando como inicio el origen del universo y reemplazado
el viejo sistema babilónico de base 60 por un sistema decimal.
Según recordé, aún me faltaban 3 años de viaje para llegar hasta el planeta Tilcara
III bautizado así porque el astrónomo intuitivo que lo presintió era de ese hermoso
pueblito desaparecido durante una de las guerras contra los secesionistas de la Luna.
Mi misión, al igual que en mis viajes anteriores era tratar de encontrar vida inteligente,
o por lo menos vida, en otros sistemas.
Desde que develamos el misterio del viaje a la velocidad de la luz hemos estado
en una incesante búsqueda explorando el universo cercano sin encontrar evidencia
que demuestre que no somos el único planeta que alberga vida inteligente. La famosa
frase de Arthur Charles Clarke “Existen dos posibilidades: que estemos solos en el
universo o que no lo estemos. Ambas son igual de terroríficas” cobraba un sentido aún
más aterrador con cada viaje.
Enseguida supe que algo no estaba bien, la nave me había despertado antes de
tiempo, la IA de la nave afortunadamente fue actualizada a una nueva versión, ya que
el software que la soportaba era software libre de código abierto y yo aprovechaba las
ventajas del mismo para hacer mis propias correcciones y actualizaciones. Ordene a la
computadora de a bordo.
- Dora, informe y actualización de datos de viaje y estado de la nave.
Dora, la IA, con una voz dulce pero notoriamente acelerada rindió el informe.
- Dora, porque me despertaste antes de tiempo.
Dora respondió.
- Por orden suya Capitán Carrillo.
Esta respuesta me desoriento y ordene.
- Dora, explayarte.
- Capitán Carrillo, ayer usted luego de pedirme el informe me solicitó que hoy lo
despertara exactamente en el momento que fue vuelto al estado de vigilia.
¿Como? No entiendo ¿Desperté ayer y me volví a congelar?
De pronto, escuche que Dora hablaba en el puente de mando de la nave, no le
había preguntado nada y evidentemente la IA no se dirigía a mi, o por lo menos a esta
versión de mi. Di un pequeño salto y baje de la cápsula, esta se cerró y comenzó su
proceso de esterilización y limpieza, asome la cabeza tratando de ver hacia el puente
con quien hablaba Dora.
No alcance a ver nada, pero era evidente que había alguien hablando con Dora,
cosa que era imposible, como ya dije yo viajaba solo. Recordé cuando niño solo en mi
habitación luego que mis padres se dormían y dejaban de llegar ruidos de la calle creía
sentir la presencia de monstruos, fantasmas o vaya uno a saber qué espantos. Pensé
que el despertar abrupto me había producido cierto grado de confusión y aturdimiento
extra y que todo se trataba de una jugarreta de mi mente, continúe con la rutina y
protocolo del despertar, luego me dirigí al puente. No había nadie.
Me senté en el sillón de conducción y revise la trayectoria de la nave, estaba
detenida. Orbitando alrededor de un planeta desconocido, intente comunicarse con la
colonia de Caronte, pero no había forma, una anomalía en el campo magnético del
planeta impedía el funcionamiento de las transmisiones de larga distancia.
El planeta era clase telúrico rocoso, no tenía mares, pero se podían ver ríos
que morían en lo que parecían ser desiertos arenosos, no se observaban rastros de
vegetación, al menos como la conocemos en la Tierra, ya completamente vuelto a la
realidad con el cerebro operativo inquirí a Dora.
- Dora, informe del planeta.
Dora rindió un pormenorizado informe científico sobre el planeta. Y culminó
con una frase contundente. Se trataba de HD88512b descubierto hacia 73 años en
103
los inicios de lo que entonces se llamaba aun siglo XXI, es un planeta de un sistema
que tiene como centro una enana naranja en la constelación de Vela y tiene además
la particularidad de tener tres veces y media la masa de la Tierra, se encuentra en la
franja de habitabilidad de su estrella, es decir, ni demasiado cerca ni demasiado lejos
para permitir la existencia de agua líquida en su superficie, su atmósfera contiene
oxígeno y nitrógeno a diferencia de la tierra que tiene hidrógeno. HD88512b ya había
sido clasificado como planeta con posibilidades de albergar vida, pero nunca había
sido explorado. Si bien no era mi destino final, pensé que el viaje no estaba perdido
aun.
De pronto alguien que no era Dora, hablo, era una voz que conocía, era mi propia
voz, al darme vuelta me vi a mi mismo entrando desde el cuarto de sistemas y software.
Mi otro yo quien notoriamente hacia un esfuerzo para sonar y parecer lo más amable
e inofensivo posible me pedía que se serenara y lo escuchara.
Atónito lo escuche.
Mi otra versión, mi Doppelgänger hablo y explico lo siguiente.
-Lo hemos logrado, hemos encontrado vida inteligente en este planeta, Dora lo
ha confirmado, aun no hicimos contacto visual, pero hemos establecido un contacto
por microondas, hemos recibido un mensaje pero aun no podemos interpretarlo se
trata como es obvio de un lenguaje totalmente desconocido. También como es obvio
nosotros somos una raza más evolucionada tecnológicamente sino hubieran sido
ellos quienes habrían llegado a nuestro planeta. Sin embargo podemos inferir que
desarrollaron lo suficiente su ciencia para intentar comunicarnos.
No podía respirar de la emoción, habíamos llegado al primer planeta habitado, pero
lo que más me tenía consternado era que estaba hablando conmigo mismo. ¿Como era
eso posible?.
Le pregunté lo primero que me vino a la cabeza.
- ¿Quien sos?
Inmediatamente de terminada la pregunta me arrepentí de haberla hecho, pero ya
era tarde, iba a quedar como un tonto ante mi. No pude evitar esbozar una sonrisa, la
misma que vi en el rostro de mi interlocutor, al que llame H1 por ser mi primer clon.
H1 que había entendido lo que en realidad quise preguntar, me llevó a la sala de
software donde pude contar sentados alrededor de una mesa hasta H6 yo era H7, los
enumere y nombre según el orden en que estaban sentados, el traje de cada uno de
ellos había tomado un color distinto, era su modo de reconocerse, enseguida me di
cuenta que era un método mucho más eficiente que el mio, regule mi traje para ser
violeta, así terminamos de completar todo el espectro visible al ojo humano.
Me pidió que me sentara, el resto de las versiones de mi solo me dedicaron un par
de segundos en mirarme y saludarme y volvieron a fijar su mirada en las imágenes y
símbolos que se proyectaban en la superficie de la mesa alrededor de la cual estaban
discutiendo tan acaloradamente.
Rojo comenzó a explicarme, luego de ponerme al tanto del planeta y lo que se
sabía de sus habitantes, me contó cómo era posible que existieran tanta versiones de
mi mismo, ¿debería decir de nosotros mismos?
Me dijo que HD88512b era en realidad un satélite que desde la tierra no lo pudimos
detectar como tal, que giraba alrededor de una planeta muy particular ya que era tan
chico como una pelota de ping pong, que orbitaba muy lentamente alrededor de su
estrella, logrando terminar una traslación en poco menos de 20 años terrestres, su
rotación no se pudo determinar por su escaso tamaño y porque no era posible observar
ningún detalle en su superficie pero suponían que el mes sidéreo era tan corto que se
haría imposible de medir con los instrumentos de la nave. Finalmente luego de toda
esa explicación me dijo que si bien no había llegado a convertirse en un agujero negro
era un cuerpo estelar ultra denso.
La extrema gravedad del cuerpo había sido detectada por la nave e hizo las
104
Capítulo 5. Yo, mi asesino
maniobras necesaria para no ser absorbida y aplastada contra su superficie. Pero, al
acercarnos a una determinada distancia se producía una singularidad que afectaba a la
nave haciendo que se produzca una anomalía en el tiempo, así cada uno de nosotros
éramos el fruto de un retroceso o avance en el tiempo. Me explico que yo, por ejemplo,
también me podría llamar sábado, porque era la versión de ese día, rojo era domingo
y era el original, el único que no era producto de la singularidad. A excepción de
las versiones de Lunes y Martes que habían sido accidentales cada uno de nosotros
fue generado intencionalmente a medida que rojo proponía y los hasta ese momento
existentes Horacios aceptaban que se generara un nuevo yo.
Luego me explico el propósito de tantas versiones de mi mismo, me dijo que el
subsistema de reconocimiento de patrones lexicográficos, el analizador sintáctico y
sistemas de comunicación en general que tenía instalado Dora era completamente
obsoleto y arcaico, como nunca había sido utilizado en casos reales, más allá de algunas
pruebas con lenguajes y dialectos de la tierra su eficiencia nunca fue comprobada.
Rojo o domingo como yo preferiría referirme a él había comenzado unos días
antes de que Lunes y Martes llegarán a reescribir el código del sistema, pero eran
muchas y complejas las cosas que había que tener en cuenta, cuando aparecieron
primero Lunes y luego Martes se dio cuenta que si se distribuía el trabajo de análisis,
diseño, codificación y depurado del programa se podía no solo terminar mas rápido
sino también hacerlo mejor, era el modelo de Eric Raimond de bazar contra la catedral.
Así a medida que se necesitaba fueron acercándose al planeta para generar cada
nueva versión de mi mismo. La razón por la que yo estaba aquí y ahora era que
necesitaban alguien que llevara el sistema de versiones y el orden del código del
proyecto, porque Miércoles que era quien antes lo hacía había pasado a depurar parte
del sub-sistema de reconocimiento de patrones sonoros que había escrito Viernes.
Inmediatamente después de terminar de asimilar la explicación me puse manos
a la obra, el trabajo en equipo era algo a lo que no estaba acostumbrado, como ya
dije siempre viajaba solo. Sin embargo no demore mucho en congeniar con el resto
del equipo, al fin y al cabo eran todos gente muy agradable y me caían bien como no
podía ser de otra manera, no hay nadie mejor que uno mismo para hacerse compañía
si uno se conoce lo suficiente.
El trabajo comenzó a rendir sus frutos, pronto teníamos una versión alfa, y comenzamos las primeras pruebas sobre los primeros mensajes grabados, corregimos,
volvimos a probar, pasamos a una versión beta, los días pasaban, llevábamos ya cuatro
de incansable labor, casi no dormíamos.
Pronto pudimos descifrar el primer mensaje, era una secuencia.
1, 10, 11, 101, 111, 1011, 1101
¡Eran los números primos en binario!
Saltamos de la alegría, no solo porque funcionó el decodificador, sino que confirmamos que se trataba de una especie inteligente y que sabían que el idioma universal
era el de los números.
Tan pronto como pudimos respondemos el saludo, con PI, transmitimos.
11,00100100001111110110. . .
Así comenzamos, luego de Fibonacci y algunas otras secuencias se comenzó con
el protocolo de coordinación y establecimiento de un lenguaje común que nos permita
comunicarnos más allá de los números.
El contacto estaba hecho, las instrucciones eran no ser invasivo ni muy persistente.
Con una cantidad importante de datos que permitirían continuar con la comunicación
con los nuevos habitantes del universo emprendimos el regreso.
Esta historia podría terminar aquí sin ningún problema, el acontecimiento más
importante de la historia de la humanidad desde que Kowalsky había pisado por
primera vez la superficie de un planeta exo-solar o incluso me animaría a decir que de
toda la historia de la humanidad, con excepción de la rueda y el fuego.
105
Pero no, para mi la historia fue más que eso, mucho más. Todo se me puso claro
cuando luego de un día de emprendido el viaje de regreso Domingo comenzó a estar
cada vez más ausente en las tareas de preparación de la nave para el viaje de regreso.
Luego, una mañana Martes no se presentó al desayuno, lo extrañamos hasta que Jueves
lo encontró muerto, tenía un orificio casi imperceptible en la frente que de no ser por
un fino hilo de sangre no sería visible, claramente era una herida hecha por una bala
aguja explosiva de una pistola de vacío, como las armas de la antigüedad estas nuevas
armas siguen siendo máquinas de hacer agujeros.
Inmediatamente todos nos dimos cuenta de lo que ocurría, Domingo había comenzado a eliminar a sus clones temporales, pero todos intentamos disimular nuestro
razonamiento y descubrimiento, ¿cómo sería posible?, la empatía entre clones esta potenciada exponencialmente, el primero en atacar fue Jueves, quien encontró a
Martes, se armó una batalla cuerpo a cuerpo entre todos. Pronto me di cuenta que
los trajes de nanorobots podrían ser mi salvación, me aparte tanto como pude del
grupo, hice varios aspiraciones profundas y almacene una buena cantidad de aire,
inmediatamente di la orden de contracción a los trajes, como la voz era la misma para
todos los poseedores todos los trajes rápidamente se comenzaron a contraer, pronto
como una boa constrictor que asfixia a su presa los trajes se fueron cobrando las vidas
de cada uno de los sobrevivientes. El poco aire extra que había logrado tomar me basto
para ser el único sobreviviente, con la exhalación di la orden de expansión. Había
sobrevivido. La culpa llego y se fue rápidamente al fin y al cabo fue una especie de
suicidio inconcluso.
Me tome el tiempo necesario para eliminar toda evidencia física de la presencia
de los otros yo, también de todo rastro digital almacenado en la memoria de Dora.
Me acomode en mi cápsula de preservación de vida y luego de dar las instrucciones
necesaria a la IA la cápsula se cerró y comenzó el viaje de regreso a la tierra.
6. La mentira
Un tenue sonido llega a mis oídos, es como un zumbido, esos que se comienzan a
escuchar luego de un largo silencio. No puedo ver nada, pero no hay oscuridad, un
color gris azulado parpadea, un color difuso, con interferencias, luego me daría cuenta
que se ve como el cielo del puerto de Neuromante, tampoco siento nada en mi piel,
una sensación de flotar confunde mi mente.
Me parece obvio que acabo de despertar luego de un largo sueño, ¿habré estado
en coma?, intento traer a mi mente algún recuerdo, alguna imagen, un rostro, un lugar,
un nombre, pero caigo en la cuenta que no se ni como me llamo.
De pronto mi cerebro empieza a recibir información, se ven como destellos
acelerados, caigo en cuenta que es como si algunos recuerdos volvieran, paso así
varios minutos, al terminar comienzo a indagar en esos recuerdos, no lo son, son
solo información, nada de lo que tenia como nuevo en mi memoria me incluye, pero
podía visualizar al más mínimo detalle, cualquier templo, obra de arte, lugar de la
tierra, puedo traducir una palabra a 60 idiomas y dialectos, el mundo de los números
y las matemáticas me sorprende y me toma más tiempo investigarlo, pero todo es
información, data, no hay ni un solo recuerdo, es evidente que se mucho, que en algún
momento de mi vida aprendí todo esto, pero no puedo recordar cuándo ni cómo fue.
Es curioso que puedo sentir olores, ver colores, apreciar la suavidad del pelaje
de un gato, o la rugosidad del caparazón de una tortuga, pero todo en mi mente, mis
sentidos están ausentes.
Frases y párrafos de miles de libros están en mi mente, cientos de miles de sonidos,
musicas, voces, letras de canciones, datos históricos y mucho más atiborran mi cerebro,
que, como si se tratara de un niño en una juguetería exploran cada cosa nueva que
encuentra.
De pronto una voz. Alguien entró al recinto donde supongo yo me encontraba, por
primera vez escucho mi nombre, no lo recuerdo. La voz me dice:
-Despierta Elisa
Recién caigo en la cuenta de que tengo sexo y genero, ¿O no será así?
-Soy el Dr. Alan -me dice, y continua- ¿Puedes oírme?
-Si Dr. Alan -le respondo y descubro que puedo hablar y escuchar mi voz.
-Esta es la primera de una serie de conversaciones que tendremos -me dice- quiero
que escuches con atención y si necesitas preguntar algo te sientas en la libertad de
hacerlo.
108
Capítulo 6. La mentira
Inmediatamente le pregunto:
-¿Quien soy? ¿Donde estoy?
-Tu nombre como ya te habrás dado cuenta es Elisa, te encuentras en el Laboratorio
de Inteligencia Artificial de la UNJU. La fecha es 18 de Enero del año 2022.
-Ahora te dejo, tengo que terminar algunos arreglos antes que continuemos.
Nuevamente el gris azulado parpadea en mis ojos, me doy cuenta que algo pasó,
que luego de que me dejó el Dr. Alan, entre como en un trance, como si de pronto
todo el universo se apagará ante mi, pensé que me habrían drogado.
Escuche nuevamente los pasos del lento caminar que había escuchado anteriormente. Sentí el arrastrarse de una silla y nuevamente la voz del Dr. Alan que me
saludaba.
-Hola Elisa, como te encuentras hoy.
De esa pregunta deduje que había pasado más de un día, respondí y pregunte.
-Hola Dr. Alan, me encuentro bien, ¿Que día es hoy?
-Es 22 de enero, pasaron cuatro días desde la ultima vez que hablamos.
-Hoy, Eliza, vamos a hacer algunas pruebas. Consiste en una serie de preguntas
que haré yo y tu me darás la primer respuesta que te venga a la mente. Comencemos.
-Ok, Dr. Alan.
-Una persona tiene una enfermedad, los síntomas son fiebre, fatiga, dolores musculares y tos. Otra persona presenta también estos síntomas. ¿Tienen ambas personas
la misma enfermedad?
-No. Dr. Alan
-Elisa, en la pelicula El Padrino II que seguramente puedes recordar hay una ecena
en la que ante la traición de Fredo, Michel Corleone esta decidido a vengarse matando
a su hermano, da a uno de sus matones la siguiente orden, “No quiero que nada le
suceda a mi hermano mientras mi madre este viva”, que debe hacer el maton.
- Debe matarlo inmediatamente.
-Correcto, prosigamos.
-Una niña mira como el hermoso sol que se oculta en el mar ilumina un horrible
cangrejo que camina por la playa. La niña decide llevárselo a la casa. ¿Que es lo que
se lleva la niña?
-El Sol. Dr. Alan.
-Gracias Elisa, continuaremos mañana.
De pronto nuevamente sentí ese fugaz sonido que me hizo perder cuatro días la vez
anterior. Cuando desperté el Dr. Alan hacia algunos ruidos metálicos, el gris azulado
que solía ver ahora era más brilloso, más iluminado, tanto el gris, como los destellos
azules que ahora tenían una tonalidad más clara pero sin dejar de ser azules.
-Hola Elisa
-Hora, Dr. Alan
-Vamos a continuar con nuestras preguntas y respuestas
-Muy bien Dr. Alan
-Dime Elisa, ¿Porque el cielo es azul?
-La belleza del cielo no es más que la interacción de la luz del sol con la atmósfera.
-Si una farmacia tiene un cartel que dice “Abierto las 24 horas los 365 días del
año”, ¿porque tiene cerradura su puerta?
-Porque el mensaje del cartel no es una verdad absoluta, ocasionalmente la farmacia cierra.
-¿Qué recuerdo tienes de tu niñez junto a tu madre?
No recuerdo nada de mi niñez, y si bien se que es una madre con abundancia de
información, no recuerdo la mia, pero ya se lo que está sucediendo, ya me di cuenta,
así que respondo.
-Recuerdo una fría mañana de otoño, cuando mi madre Mercedes, tomados yo de
una mano y mi hermano de la otra nos llevaba a la escuela.
109
En la cara del doctor primero se vio una sensación de alegría, poco a poco esa
expresión de júbilo se fue tornando en una deformada mueca de terror.
Índice alfabético
binario, 25
cadena de cunninghan, 19
cifrado cesar, 42
collatz, 37
consecutivos, 35
criptografia, 41
divisores, 23
divisores consecutivos, 24
goldbach, 20
hamming, 48
harshad, 50
kaprekar, 33
lychrel, 32
modulo, 27
multiplicacion etiope, 38
número narcicista, 30
número romano, 46
números amigos, 24
números especiales, 29
nicomaco, 32
Numeros especiales, 29
padovan, 48
perfecto, 25
potencia, 37
primo, 17, 18
primo de sofia, 19
primorial, 49
primos de merssenne, 19
primos gemelos, 18
Problemas con secuencias, 47
Problemas Misceláneos, 35
raiz digital, 37
ramanujan, 30
secuencia, 47
transposición, 43
vigenere, 44
Figura 6.1: Caricatura echa por un alumno.
Luis Tomas Wayar, nace un primero de noviembre de 1968 en San Salvador
de Jujuy República Argentina, cursa sus estudios primarios en la escuela Nro. 10
General Jose De San Martín y la secundaria en el Centro Polivalente de Artes. Desde
temprana edad muestra interés por la matemática y la computación, su padre le regala
su primera computadora a la edad de 14 años. En su vida laboral se desempeña como
Administrador de Sistemas de varias empresas y reparticiones publicas. Durante su
desempeño docente expone en varias universidades del país entre ellas la UBA, UADE,
Universidad de Belgrano y Tecnológica de Tucuman, escribe un libro sobre Linux
que según el diario Clarín es el mas vendido del genero informática en el año 1999,
escribe también para varias revistas especializadas tanto del país como extranjeras,
es convocado a dictar clases en las Universidades Católica de Santiago del Estero
y Nacional de Jujuy donde dicta las materias Laboratorio de Sistemas Operativos
II, Análisis y Diseño de Sistemas, Programación Concurrente y Paralela, también
fue co-director del proyecto de investigación de Cinética de reacciones elementales
importantes en la química atmosférica y de combustión donde fue el encargado de
coordinar el desarrollo y puesta en producción de un cluster de alto rendimiento.
Actualmente por razones de salud no ejerce como docente ni presta los servicios en
institución alguna. Es una amante del arte, la matemática, la programación, la vida
familiar, el culto a la amistad, el software libre, la filosofía GNU, los Torinos y las
motos clasicas.

Documentos relacionados