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.