———————————————————————————————————————————————— Universidad Nacional de Salta Facultad de Ciencias Exactas Departamento de Matemática ARITMÉTICA ELEMENTAL APUNTES DE CÁTEDRA MARZO DE 2006 JORGE YAZLLE ———————————————————————————————————————————————— Índice general Capítulo 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN 1. Ligero repaso de lógica proposicional 2. Conjuntos inductivos. Dos formas del Principio de Inducción 3. El Principio del Buen Orden (PBO) y el Principio del Contraejemplo Más Chico (PCMC) 4. Equivalencia entre los cuatro principios 5. Aplicación a la demostración de proposiciones 6. Algunas propiedades del conjunto de los números naturales 3 3 7 9 10 11 15 Capítulo 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD 1. La notación algorítmica 2. Los números enteros 3. La división de números naturales 4. La división de números enteros 5. Números primos y compuestos 6. Algunas curiosidades 17 17 21 22 26 29 34 Capítulo 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO 1. Máximo común divisor 2. Mínimo común múltiplo 3. Ecuaciones diofantinas lineales 37 37 44 46 Capítulo 4. EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA 1. Factorización de números naturales: existencia y unicidad 2. Algunas consecuencias del Teorema Fundamental 3. Ternas pitagóricas 49 49 52 54 Capítulo 5. CONGRUENCIAS 1. Congruencia módulo m 2. Propiedades generales de las congruencias 3. Ecuaciones de congruencia 4. Aspectos algebraicos de la congruencia: aritmética modular 57 57 58 63 66 Apéndice A. USO DEL SOFTWARE “MAPLE” 73 1 Capítulo 1 PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN En nuestra vida diaria, a través de la observación, podemos detectar hechos que ocurren con cierta frecuencia, y que nos mueven a sacar conclusiones. El sol ha salido ya tantas veces, una por cada mañana que hemos vivido, que ni remotamente se nos ocurre que mañana no va a salir. Si tiro hacia arriba, en forma perfectamente vertical, este ladrillo en este descampado, mejor que me corra so riesgo de perder mi cabeza, pues sé que el ladrillo, tarde o temprano, va a regresar. Lo he visto muchas veces... Hacemos lo que el diccionario de la Real Academia Española llama inducción. En realidad, tal palabra tiene varios significados, y el que nos interesa aquí es el siguiente: “Extracción, a partir de determinadas observaciones o experiencias particulares, del principio general que en ellas está implícito”. Suena a que hay algo experimental en el proceso de inducción: deduzco algo general a partir de lo que experimento. Y, pensándolo bien, así es. Pero el objetivo de este capítulo no es el estudio de la inducción, sino de la inducción matemática. ¿Qué es, pues, la inducción matemática? Es un procedimiento riguroso para probar propiedades matemáticas relativas al conjunto de números naturales. No hay nada experimental en el método, como veremos. Por el contrario, es una poderosa herramienta que nos ayuda en las demostraciones. ¿Demostraciones de qué? Bueno, demostraciones de propiedades que tal vez hemos obtenido por inducción en el sentido experimental (sí, damas y caballeros... se puede experimentar en la matemática). Por ejemplo, la seño mandó al niño Karlitos a sumar los números del 1 al 100. Fastidiado por la tarea que le acababan de dar, pensó cómo podría ahorrarse trabajo. Observó que 1 = 1 = 1·2 2 1 + 2 = 3 = 2·3 2 1 + 2 + 3 = 6 = 3·4 2 1 + 2 + 3 + 4 = 10 = 4·5 2 1 + 2 + 3 + 4 + 5 = 15 = 5·6 2 y se dio cuenta de que, en esos casos analizados, la suma de los n primeros números naturales es n(n+1) . Y 2 así como el sol va a salir mañana en base a que viene saliendo todos estos días, ¿será que 1 + 2 + · · · + 100 = 100·101 = 5.050, evitando así el buen Karl la tediosa suma ordenada por la tirana?1 Más generalmente, ¿será que 2 cualquiera sea el natural n? La fórmula 1+2+· · ·+n = n(n+1) fue obtenida por inducción 1+2+· · ·+n = n(n+1) 2 2 (en el sentido de la R.A.E.). Pero necesitamos algo que fidedignamente –rigurosamente, más bien– nos muestre que anda bien para todo n natural, no sólo para los primeros casos. Para eso viene a nuestro auxilio el método de inducción matemática, cuyo estudio es el objeto de este capítulo. Para entrar en tema, ofrecemos primero un somero repaso de cuestiones básicas de la lógica proposicional, sobre la cual se fundan las demostraciones que queremos estudiar. 1. Ligero repaso de lógica proposicional Una proposición es un enunciado acerca del cual tiene sentido preguntarse si es verdadero o falso en su contexto. Típicamente, una proposición asevera algo, y ese algo, en su contexto, puede ser verdadero o falso. En este 1Karl Friedrich Gauss (1777 - 1855), enorme matemático alemán, siendo apenas un niño recibió la consigna, por parte de su profesor, de sumar los números 1 a 100. No procedió por inducción, sino que acomodó dos veces los números 1 a 100 en dos filas, en una de ida y en otra de vuelta, como sigue: 1 100 −−− 101 + + + 2 99 −−− 101 + + + 3 98 −−− 101 + + ··· ··· + + + ··· + 99 2 −−− 101 + + + 100 1 −−− 101 resultando así 100 columnas, cada una de las cuales, sumada, da 101. Sumar los resultados de esas 100 columnas corresponde a sumar dos veces los números 1 a 100. Luego, 100 · 101 = 5.050 1 + 2 + 3 + · · · + 99 + 100 = 2 Gauss notó también que un razonamiento parecido andaría muy bien si se suman los números 1 a n, cualquiera sea n ∈ N. 3 4 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN curso, estamos interesados principalmente en aseveraciones referidas a los números naturales (N = {0, 1, 2, 3, . . .}) y enteros (Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .}). Simbolizamos a las proposiciones con letras minúsculas (posiblemente con subíndices): p, q, r, s1 , t20 , etc. Si p es una proposición verdadera, decimos que “el valor de verdad de p es verdadero” (simbolizado v(p) = V ); en caso contrario, decimos “el valor de verdad de p es falso” (simbolizado v(p) = F ). 1.1. Proposiciones compuestas. A partir de proposiciones dadas, pueden construirse otras proposiciones, denominadas proposiciones compuestas, empleando conectivos lógicos (negación, conjunción, disyunción, implicación, doble implicación, y combinaciones de todos ellos). Interesa entonces averiguar el valor de verdad de la proposición compuesta según el valor de verdad de cada una de las proposiciones que se utilizaron en la construcción de la compuesta, y los distintos casos que pueden presentarse se resumen en una llamada tabla de verdad asociada a la proposición compuesta que se esté analizando. El sentido común y el uso del lenguaje cotidiano son de ayuda invalorable para entender el porqué de los valores de verdad de una proposición compuesta. 1.1.1. Negación. Si p es una proposición, su negación, simbolizada ∼ p y leída “no p”, es también una proposición, cuyo valor de verdad es siempre distinto que el de p. Es decir, si v(p) = V , es v(∼ p) = F , y si v(p) = F , es v(∼ p) = V . Todo esto se resume en la siguiente tabla de verdad: p V F ∼p F V 1.1.2. Conjunción. Si p y q son proposiciones, su conjunción, simbolizada p∧q y leída “p y q”, es también una proposición, cuyo valor de verdad es verdadero únicamente en el caso en que p y q sean ambas verdaderas; si una es falsa (o ambas lo son), la conjunción es una proposición falsa. He aquí su tabla de verdad, mostrando todos los casos que pueden presentarse: p q p∧q V V V V F F F V F F F F La palabra “pero” también expresa una conjunción. Por ejemplo, la proposición “soy pobre pero feliz”, aún con una connotación de oposición, expresa que “soy pobre” y también que “soy feliz”. Por eso, su simbolización podría ser p ∧ q, donde p es “soy pobre” y q es “soy feliz”. 1.1.3. Disyunción. Si p y q son proposiciones, su disyunción, simbolizada p ∨ q y leída “p o q”, es también una proposición, cuyo valor de verdad es falso únicamente en el caso en que p y q sean ambas falsas; si una es verdadera (o ambas lo son), la disyunción es una proposición verdadera. La tabla de verdad es, en este caso: p V V F F q V F V F p∨q V V V F 1.1.4. Implicación. Dadas dos proposiciones p y q, se puede construir una nueva proposición, simbolizada p ⇒ q y leída “Si p, entonces q”. Tal proposición se denomina implicación, y expresa el hecho de que a partir del conocimiento que nos entrega la proposición p, puede deducirse la proposición q. Será falsa sólo en el caso en que, siendo p verdadera, sea q falsa. La tabla de verdad correspondiente es, entonces: p V V F F Otras formas de leer p ⇒ q: 1. 2. 3. 4. 5. 6. Si p, q. q si p. p implica q. p sólo si q. p es condición suficiente para q. q es condición necesaria para p. q V F V F p⇒q V F V V 1. LIGERO REPASO DE LÓGICA PROPOSICIONAL 5 En una implicación p ⇒ q, p se llama antecedente, premisa o hipótesis, y q se llama consecuente, conclusión o tesis. Debe observarse que si el antecedente es falso, la implicación es verdadera. Interpretado, esto nos dice que no podemos sacar conclusiones fiables a partir de premisas falsas. Dada una implicación con antecedente p y consecuente q, se pueden construir otras implicaciones, que se denominan implicaciones asociadas a p ⇒ q. Ellas son: Recíproca: q ⇒ p Contraria: ∼ p ⇒∼ q Contrarrecíproca: ∼ q ⇒∼ p La propia implicación p ⇒ q recibe, en este caso, el nombre de implicación directa. Es destacable que la directa y la contrarrecíproca siempre tienen el mismo valor de verdad. Esto tendrá consecuencias a la hora de querer demostrar la veracidad de ciertas implicaciones. Una implicación p ⇒ q expresa que si ocurre p, entonces ocurre q. Negar esto quiere decir que ocurra p pero no ocurra q, es decir, p∧ ∼ q. Veamos la siguiente tabla de verdad que muestra que, en cada caso, el valor de ∼ (p ⇒ q) es el mismo que el de p∧ ∼ q: p V V F F q V F V F ∼q F V F V p∧ ∼ q F V F F p⇒q V F V V ∼ (p ⇒ q) F V F F 1.1.5. Doble implicación o equivalencia lógica. Dos proposiciones p y q se dicen equivalentes, simbolizado p ⇔ q, si ambas tienen igual valor de verdad. En realidad, p ⇔ q es otra proposición cuya tabla de verdad es: p V V F F q V F V F p⇔q V F F V La doble flecha sugiere que p ⇒ q y que q ⇒ p, como efectivamente ocurre. Es decir, (p ⇔ q) ⇐⇒ (p ⇒ q ∧ q ⇒ p) De allí que ⇔ reciba también el nombre de doble implicación. Indistintamente, una doble implicación se lee de cualquiera de las siguientes formas: 1. p es equivalente a q. 2. p si, y sólo si, q. 3. p es condición necesaria y suficiente para q. Hay unas cuantas equivalencias lógicas famosas que son de mucha utilidad: p∧p p∨p ∼ (∼ p) p∧q p ∧ (q ∧ r) p∨q p ∨ (q ∨ r) p ∧ (q ∨ r) ⇐⇒ p ⇐⇒ p ⇐⇒ p ⇐⇒ q∧p ⇐⇒ (p ∧ q) ∧ r ⇐⇒ q∨p ⇐⇒ (p ∨ q) ∨ r ⇐⇒ (p ∧ q) ∨ (p ∧ r) p ∨ (q ∧ r) ∼ (p ∧ q) ∼ (p ∨ q) ∼ (p ⇒ q) (p ⇒ q) (p ⇒ q) p ⇒ (q ∨ r) ⇐⇒ ⇐⇒ ⇐⇒ ⇐⇒ ⇐⇒ ⇐⇒ ⇐⇒ (p ∨ q) ∧ (p ∨ r) (∼ p) ∨ (∼ q) (∼ p) ∧ (∼ q p ∧ (∼ q) (∼ p) ∨ q (∼ q ⇒∼ p) (p∧ ∼ q) ⇒ r 1.2. Formas proposicionales y cuantificadores. Expresiones como “x es argentino” no pueden ser calificadas como verdaderas o falsas, si es que x no está especificado. x está actuando como una variable. Cuando se lo sustituya por algún ente concreto (por ej. “Pelé”), se transformará en proposición (“Pelé es argentino”). Expresiones como ésta, en las que aparecen variables dando vueltas, se llaman formas proposicionales, o predicados, y se simbolizan con un nombre de proposición seguido de la variable, puesta entre paréntesis (similar a la notación empleada para las funciones). Por ejemplo, a “x es argentino” se la puede simbolizar como p(x). Debe haber un conjunto universal de referencia, del cual se puedan sacar valores para x (en nuestro ejemplo anterior, podría ser el conjunto de todos los varones de este mundo). Puede haber más de una variable en una forma proposicional, por ejemplo q(m, n) podría ser “m > 2 ∧ n < 4” en el universo de los números naturales. Hay dos formas de convertir a una forma proposicional p(n) en proposición: 1. Sustituir la variable por algún valor concreto del conjunto universal. 2. Anteponerle un cuantificador. Los cuantificadores vienen en dos sabores: 6 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN a) Universal: ∀n, p(n). Se lee “para todo n, p(n)”. Esta proposición será verdadera cuando p(n) sea verdadera para cualquier sustitución de n por un elemento del conjunto universal. b) Existencial: ∃n : p(n). Se lee “existe n tal que p(n)”. Es verdadera cuando existe al menos una sustitución de n (por un elemento del conjunto universal) que hace que la correspondiente p(n) sea verdadera. Observación: si una forma proposicional contiene más de una variable, se debe anteponer un cuantificador por cada variable. Por ejemplo: ∀m, ∃n : p(m, n), o ∀m, ∀n, p(m, n) (si, como en el último caso, el cuantificador es el mismo, y si m y n se mueven ambas en el mismo conjunto universal, es costumbre abreviar diciendo ∀m, n, p(m, n), o ∃m, n : p(m, n), pero que quede claro que esto es sólo una abreviatura: implícitamente, hay dos cuantificadores en estos ejemplos). ¿Cómo se obtiene el valor de verdad de una proposición del estilo ∀n, p(n)? Según lo dicho arriba, para demostrar que es falsa basta con encontrar un valor para n tal que la correspondiente p(n) resulte falsa. Un n con esas características se denomina contraejemplo. Si la proposición fuese verdadera, hay que mostrar que p(n) es verdadera para todos los n posibles. Si el conjunto universal en el que se mueve n fuese finito, podríamos demostrar la veracidad de la proposición verificando que p(n) es verdadera caso por caso. Pero si el conjunto universal fuese infinito, jamás terminaríamos de probar todos los casos (y aclaremos que no alcanza con probar con “unos cuantos n”). Una técnica es seleccionar n0 arbitrario (es decir, representando a cualquier elemento del conjunto universal) y ver que p (n0 ) es verdadero. Entonces, una demostración de la veracidad de ∀n, p(n) puede típicamente comenzar con “Sea n0 un elemento cualquiera del conjunto universal...” y terminar con “Habiendo deducido que p (n0 ) es verdadera, y siendo n0 arbitrario, se concluye la veracidad de ∀n, p(n)”. Más adelante, veremos métodos de decisión en el caso particular en que el universo de trabajo es N. Muchas veces se dará el caso en que el universal es U pero nosotros queremos expresar que un cierto predicado p(n) se cumple para un cierto subconjunto A de U . Podemos hacer esto de dos formas equivalentes: ∀n ∈ A, p(n) ∀n, n ∈ A ⇒ p(n) En la última, al no especificar a qué conjunto pertenece n, se sobreentiende que es al conjunto universal U . Sin embargo, lo que se afirma es que, bajo la premisa de que n ∈ A, se cumple p(n). A los efectos de la veracidad, no interesan los n que no estén en A, pues para ellos la expresión n ∈ A ⇒ p(n) es verdadera. De allí la equivalencia entre ambas formas. ¿Cómo se obtiene el valor de verdad de una proposición del estilo ∃n : p(n)? Si es verdadera, una manera es mostrar al menos un n0 del conjunto universal tal que p (n0 ) resulte verdadera. Para demostrar que es falsa, una técnica puede ser mostrar que su negación es verdadera. ¿Negación de una proposición con cuantificadores? ¿Cómo es éso? 1.2.1. Negación de proposiciones con cuantificadores. Negar que “para todo n, p(n)” puede hacerse muy fácil y mecánicamente: “no es cierto que para todo n, p(n)”. Si lo pensamos un poco, esto quiere decir que hay al menos un n para el cual no se satisface p(n), es decir, “existe n tal que ∼ p(n)”. Es lo que dice el sentido común. En símbolos: ∼ ∀n, p(n) equivale a ∃n :∼ p(n) Negar que “existe n tal que p(n)” es lo mismo que decir que “ningún n satisface p(n)”, o, equivalentemente, que “todos los n no satisfacen p(n)” (esta última forma no es muy usada en el lenguaje coloquial, y no debe confundirse con “no todos los n satisfacen p(n)”, que corresponde a la negación de una proposición con cuantificador universal). En definitiva: ∼ ∃n, p(n) equivale a ∀n :∼ p(n) El mecanismo para negar una proposición con cuantificador es fácil de recordar: se cambia el cuantificador y se niega la forma proposicional. ¿Y si hay más de un cuantificador? Lo mejor es ir por partes. Por ejemplo, si queremos negar que ∃n : ∀m, ∃z : p(m, n, z), podemos proceder paso a paso así: ∼ ∃n : ∀m, ∃z : p(m, n, z) ∀n, ∼ ∀m, ∃z : p(m, n, z) ∀n, ∃m :∼ ∃z : p(m, n, z) ∀n, ∃m : ∀z, ∼ p(m, n, z) Y ya está, en la última línea tenemos la negación deseada. Podríamos también haber procedido mecánicamente: cambiamos los cuantificadores y negamos la forma proposicional. 1.3. Demostración de implicaciones. Dada una proposición del tipo p ⇒ q, en donde p y q son a su vez proposiciones (posiblemente con cuantificadores), interesa ver de qué manera podemos analizar su valor de verdad. Si el antecedente p fuese falso, la demostración ya está lista: la implicación es verdadera. Pero lo más frecuente es encontrarse con implicaciones en las que el antecedente es verdadero, y a partir de ello se desea probar la veracidad del consecuente. Es lo que pasa en los teoremas que nos han enseñado: se supone verdadera 2. CONJUNTOS INDUCTIVOS. DOS FORMAS DEL PRINCIPIO DE INDUCCIÓN 7 la (o las) hipótesis, y, por aplicación del razonamiento y de propiedades valederas, debe demostrarse que la tesis es verdadera. Cuando se hace así, se dice que se ha empleado el método directo de demostración de implicaciones. Ahora bien, sabemos que la contrarrecíproca de una implicación tiene el mismo valor de verdad que la directa. Entonces, demostrar la veracidad de p ⇒ q es lo mismo que demostrar la de ∼ q ⇒∼ p, que puede hacerse por el método directo. Para eso, se supone ∼ q verdadera y debe concluirse que ∼ p es verdad. O, equivalentemente, se supone q falsa y debe probarse que p es falsa. Si se lo logra, la implicación queda demostrada por el método indirecto. En resumidas cuentas, por este método se parte de la falsedad del consecuente y debe arribarse a la falsedad del antecedente. Otro método para demostrar que p ⇒ q es verdadera: mostrar que su negación p∧ ∼ q es falsa. Para eso, se puede arrancar suponiendo la veracidad de p y de ∼ q, y por manipulación legítima debe arribarse a alguna contradicción. Si lo logramos, hemos demostrado la implicación por el método del absurdo. Finalmente, unas palabras para la demostración de una doble implicación del tipo p ⇔ q. Hay que demostrar que p ⇒ q y que q ⇒ p. Muchas veces conviene considerar la contrarrecíproca de esta última, y entonces la doble implicación queda demostrada a través de los siguientes dos pasos: 1. suponiendo p verdadera, se deduce que q es también verdadera, y 2. suponiendo p falsa, se deduce que q es también falsa. 2. Conjuntos inductivos. Dos formas del Principio de Inducción En la Teoría de Números que aprenderemos en este curso, es frecuente toparse con afirmaciones del estilo “∀n ∈ N, p(n)”, en donde p(n) es un predicado en la variable natural n, e interesa averiguar su valor de verdad. Conforme a lo que sabemos de proposiciones cuantificadas, la afirmación con el cuantificador universal será falsa si p(n) es falsa al menos para un n natural, y verdadera si p(n) es verdadera cualquiera sea el natural n. En otras palabras, si designamos por P al conjunto de todos los naturales n tales que p(n) es verdadera, la afirmación será cierta si y sólo si P = N. Esto nos lleva a preguntarnos, entonces, bajo qué condiciones un subconjunto P de números naturales, especificado por comprensión, es precisamente N. Es decir, dado P ⊂ N, ¿cómo decidir si P = N? Claro que nuestra primera reacción puede ser buscar algún natural que no satisfaga el requisito de pertenencia a P . ¿Qué pasa si, tras probar con muchos n, no lo encontramos? ¿Será que efectivamente P = N? ¿O será que no hemos sido lo suficientemente astutos, o pacientes, en la búsqueda? En todo caso, podríamos en tal situación conjeturar que P = N. Y entonces, ¿cómo probar que la conjetura es cierta? Resulta que, tras varios años de discusiones, los matemáticos se dieron cuenta de que hay varias formas muy útiles para decidir si un subconjunto de los naturales es el conjunto de todos los naturales. El objetivo del resto del capítulo es explorar algunas de esas formas, que a primera vista pueden parecer muy diferentes, aún cuando terminaremos demostrando que son equivalentes. Las herramientas que aquí veremos han sido y son de mucha utilidad en la demostración de proposiciones del estilo de la que enunciamos al principio. Definición 1.1. Sea P un subconjunto de los números reales. P se dice inductivo si satisface simultáneamente las siguientes dos condiciones: 1. 0 está en P 2. Si n es un número que está en P , entonces n + 1 también está en P Por una analogía con fichas de dominó que caen empujadas por su anterior (que acaba de caer) y que a su vez harán caer a la que les siguen, muchas veces se dice que los conjuntos inductivos tienen la propiedad dominó. Por ejemplo, el conjunto de todos los reales mayores o iguales que 0 es inductivo, así como el conjunto de todos los enteros mayores que −5. El conjunto {0} no es inductivo, ni tampoco el de todos los enteros mayores que 7. Adivine, querido lector, en qué categoría caen los conjuntos {x ∈ R : −5 ≤ x ≤ 4 ∨ x ≥ 5} y {x ∈ R : x = 0 ∨ x ≥ 1}. Definición 1.2. El conjunto de los números naturales N se define como el más pequeño (en el sentido de la contención de conjuntos) de todos los subconjuntos de números reales que son inductivos. Es decir, N está caracterizado por las siguientes dos propiedades: 1. N es inductivo, y 2. si S es un subconjunto inductivo de R, entonces S ⊃ N. 2.1. El Principio de Inducción, primera forma (PI1). De la propia definición que hemos dado de N, surge un primer criterio para decidir si un subconjunto P de N es todo N: verificar si P es inductivo. De serlo, entonces P = N. Es decir: 8 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN Sea P ⊂ N tal que satisfaga simultáneamente: a) 0 ∈ P b) ∀n ∈ N, (n ∈ P =⇒ n + 1 ∈ P ) Entonces P = N De acuerdo a esto, para verificar si un dado subconjunto P de N es N, primero hay que ver si 0 ∈ P . De no ser así, está claro que P 6= N. Ahora si 0 ∈ P , hay que verificar el segundo requisito: tomar un natural n arbitrario, suponer que está en P , y mostrar que su consecutivo, n + 1, también está en P . Si es así, entonces P = N. El PI1 es intuitivamente muy claro: primero pide que 0 esté en P (que caiga el primer dominó de la fila). Si además están los consecutivos de cada elemento en P (que cada dominó, si cae, voltee al que le sigue), ya sabiendo que 0 ∈ P , entonces 1 ∈ P , y de allí que 2 ∈ P , de donde 3 ∈ P , así que 4 ∈ P , y por lo tanto 5 ∈ P , por lo cual . . . Termina siendo que todo natural está en P , es decir, N ⊂ P . Como de entrada teníamos que P ⊂ N, debe ser P = N. El hecho de vigilar que 0 ∈ P se llama base del proceso, y el de verificar que si n está en P entonces n + 1 también está en P , se llama paso inductivo. En este paso inductivo, el hecho de suponer que n ∈ P se llama hipótesis inductiva, o hipótesis de inducción. 2.2. El Principio de Inducción, segunda forma (PI2). Según este principio, hay que vigilar un solo requisito, consistente en una modificación al paso inductivo del PI1: Sea P ⊂ N tal que satisfaga: ∀n ∈ N, ∀k ∈ N, (k < n ⇒ k ∈ P ) =⇒ n ∈ P Entonces P = N ¿Parece chino? Expliquémoslo en castellano: la expresión ∀k ∈ N, (k < n ⇒ k ∈ P ) significa que todos los naturales menores (estrictamente) que n están en P (la expresión podría haberse escrito también así: ∀k < n, k ∈ P , pero preferimos dejarla como está para recalcar que nuestro universo de trabajo es el conjunto de todos los naturales); al estar como antecedente de la implicación, quiere decir entonces que hay que interpretarla como “suponer que todos los naturales menores que n están en P ”. Es nuestra hipótesis de inducción. Por lo tanto, dado n ∈ N, la implicación involucrada pide verificar si se puede concluir que n está en P bajo la suposición de que todos los naturales menores que n están en P . En definitiva, el principio dice que se elija un natural n arbitrario, y que se haga de cuenta que todos los naturales menores (estrictamente) que n están en P . Si con ello se logra demostrar que el propio n también está en P , entonces P = N. Para terminar de entender intuitivamente el PI2, primero veamos que un subconjunto de naturales que satisface el requisito del PI2 necesariamente contiene al 0. Lema 1.3. Sea P ⊂ N tal que satisfaga el requisito del PI2. Entonces 0 ∈ P . Demostración. Ya que se cumple el requisito, tenemos que, en particular, haciendo n = 0, es verdadera la siguiente implicación: ∀k ∈ N, (k < 0 ⇒ k ∈ P ) =⇒ 0 ∈ P . Como el antecedente de la misma es también verdadero (pues no existe un natural menor que 0), deducimos que el consecuente debe ser verdadero, es decir, 0 ∈ P. Ahora expliquemos el porqué del PI2, es decir, por qué un P que satisfaga el requisito es todo N. Por el lema, ya sabemos que 0 está en P . Como todos los naturales menores que 1 están en P , del requisito surge que 1 está en P . Pero entonces, como todos los naturales menores que 2 están en P , se tiene que 2 está en P , y, continuando así, vemos que cualquier natural está en P . Un comentario más: el PI2 pide verificar que suponiendo que todo natural menor que 0 está en P , 0 está en P suponiendo que todo natural menor que 1 está en P , 1 está en P suponiendo que todo natural menor que 2 está en P , 2 está en P etcétera (lógicamente, no vamos a verificar una por una, sino que procederemos a través de alguna generalización). Viendo bien la implicación correspondiente al 0, su antecedente es siempre verdadero. Por tanto, obligatoriamente hay que controlar que 0 está en P . Por eso, muchos autores enuncian el PI2 con 2 requisitos: el que dimos aquí, más 3. EL PRINCIPIO DEL BUEN ORDEN (PBO) Y EL PRINCIPIO DEL CONTRAEJEMPLO MÁS CHICO (PCMC) 9 el requisito de que 0 pertenezca a P . Si bien es redundante (ver el lema 1.3), no hay ningún pecado en ello (es más, recuerda al usuario que tarde o temprano debe verificar que 0 ∈ P ). 3. El Principio del Buen Orden (PBO) y el Principio del Contraejemplo Más Chico (PCMC) Ya desde chicos estamos concientizados de que si tomamos cualquier subconjunto de números naturales, ese subconjunto contendrá un elemento más chiquito que los otros miembros del conjunto, según la ordenación natural que nos enseñaron (la cosa puede ser distinta si preguntamos por el elemento más grande del conjunto, pero eso no viene al caso ahora). Vamos a formalizar esto a través de una serie de definiciones. Definición 1.4. Dados dos conjuntos X e Y , el producto cartesiano X por Y , denotado X × Y , es el conjunto de todos los pares ordenados cuya primera componente está en X y cuya segunda componente está en Y . Es decir, X × Y = {(x, y) : x ∈ X ∧ y ∈ Y }. Una relación en X es cualquier subconjunto del producto cartesiano X × X. Definición 1.5. Sea R una relación en X. R es reflexiva si ∀x ∈ X, (x,x) ∈ R. R es antirreflexiva si ∀x ∈ X, (x, x) ∈ / R. R es antisimétrica si ∀x, y ∈ X, (x, y) ∈ R ∧ (y, x) ∈ R =⇒ x = y. R es transitiva si ∀x, y, z ∈ X, (x, y) ∈ R ∧ (y, z) ∈ R =⇒ (x, z) ∈ R. Definición 1.6. Una relación R transitiva en X se llama un orden para X, y decimos entonces que X está ordenado por R. Si (x, y) está en R, decimos que x e y son comparables. R es un orden total para X si es un orden en el cual dos elementos cualesquiera de X son comparables, es decir, ∀x, y ∈ X, (x, y) ∈ R∨(y, x) ∈ R. Una relación de orden que es también antisimétrica y reflexiva se dice un orden amplio, en tanto que una relación de orden antirreflexiva se llama un orden estricto. En la teoría general de órdenes, es usual emplear el símbolo ≤ en cuenta de R para simbolizar una relación de orden amplio, y decimos a ≤ b (“a es menor o igual que b”) en lugar de (a, b) ∈ ≤. Además, si a ≤ b pero a 6= b, escribimos a < b (“a es menor que b”); < es una relación de orden estricto. Definición 1.7. (el orden usual de N) Sean a, b ∈ N. Se dice que a ≤ b si existe c ∈ N tal que a + c = b. Queda como ejercicio comprobar que la relación así definida es efectivamente un orden amplio para N. Definición 1.8. Sea A un subconjunto de un conjunto X ordenado por una relación ≤. Se dice que A posee primer elemento, o mínimo elemento, si existe m ∈ A tal que ∀x ∈ A, m ≤ x. Definición 1.9. Un conjunto X ordenado por ≤ se dice bien ordenado si todo subconjunto no vacío de X posee un mínimo elemento. PRINCIPIO DEL BUEN ORDEN: N, con su relación de orden usual, es un conjunto bien ordenado. Es decir, todo subconjunto no vacío del conjunto de los números naturales posee elemento mínimo. Y así de sencilla es la formulación del principio del buen orden. Por supuesto que responde a lo que intuitivamente uno espera: si un conjunto P ⊂ N es no vacío, tiene al menos un elemento n0 ∈ P . O bien ese n0 es el elemento mínimo en P , o bien hay algún elemento n1 ∈ P tal que n0 > n1 . O bien ese n1 es el elemento mínimo en P , o bien hay algún elemento n2 ∈ P tal que n1 > n2 . Así siguiendo, estamos desarrollando un proceso de búsqueda que debe finalizar, tarde o temprano, pues la lista estrictamente decreciente de números naturales que vamos obteniendo no puede ser infinita. Una manera de plasmar el PBO en una herramienta para decidir si un subconjunto P de naturales es todo N, es el siguiente PRINCIPIO DEL CONTRAEJEMPLO MAS CHICO: Sea P ⊂ N tal que satisfaga: ∀n ∈ N, n ∈ / P =⇒ ∃k ∈ N : (k < n ∧ k ∈ / P) Entonces P = N De nuevo, a no asustarse con los jeroglíficos. El principio establece que si por cada número natural que no estuviese en P fuésemos capaces de encontrar un número natural menor que tampoco esté en P , entonces P debe contener a todos los naturales. Esta conclusión es clara: si se cumpliera el requisito, y si hubiera un natural n0 ∈ / P , seríamos capaces de encontrar una sucesión estrictamente decreciente infinita de naturales, cosa que es imposible. El requisito ∀n ∈ N, n ∈ / P =⇒ ∃k ∈ N : (k < n ∧ k ∈ / P ) fue escrito así para hacer hincapié en que tal k es un número natural. Si se da eso por sobreentendido, el requisito también podría haberse escrito así: ∀n ∈ N, n ∈ / P =⇒ (∃k < n : k ∈ / P ) . Notemos entonces que, por contrarreciprocidad, el principio establece que si P 6= N, entonces ∃n ∈ N : (n ∈ / P ∧ ∀k < n, k ∈ P ). 10 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN 4. Equivalencia entre los cuatro principios Ahora demostraremos que si se acepta como verdadero cualquiera de los principios vistos, en base a éso se puede deducir la veracidad de cualquiera de los restantes. Para hacerlo, demostraremos el siguiente esquema de implicaciones: PI1 =⇒ PI2 ⇑ ⇓ PCMC ⇐= PBO 1. PI1=⇒PI2. Nuestra hipótesis es que ∀Q ⊂ N, 0 ∈ Q ∧ (∀n ∈ N, n ∈ Q ⇒ n + 1 ∈ Q) =⇒ Q = N y debemos demostrar que ∀P ⊂ N, ∀n ∈ N, ∀k ∈ N, (k < n ⇒ k ∈ P ) =⇒ n ∈ P ! =⇒ P = N Supongamos entonces que un subconjunto P de los naturales satisface que ∀n ∈ N, ∀k ∈ N, (k < n ⇒ k ∈ P ) =⇒ n ∈ P Nuestro objetivo es demostrar que P = N, suponiendo válido el PI1. Hagamos Q = {n ∈ N : para todo natural i ≤ n, i ∈ P } Notemos que Q ⊂ P : si n ∈ Q, se tiene que para todo natural i ≤ n, i ∈ P . En particular, n ∈ P . Verifiquemos ahora que Q satisface los requisitos del PI1: como 0 ∈ P (lema 1.3), entonces 0 cumple la condición de pertenencia a Q. Ahora sea n cualquier natural en Q. Esto quiere decir que para todo natural i ≤ n, i ∈ P . Dicho de otro modo, para todo natural i < n + 1, i ∈ P . Ya que estamos suponiendo que P cumple el requisito del PI2, deducimos que n + 1 está en P . Por lo tanto, para todo natural i ≤ n + 1, i ∈ P . Luego, n + 1 ∈ Q. Como Q satisface los dos requisitos del PI1 que hemos aceptado como válido, es Q = N. Ya que Q ⊂ P , concluimos que N ⊂ P , y como de entrada teníamos que P ⊂ N, llegamos a que P = N, según deseábamos. 2. PI2=⇒PBO. Ahora nuestra hipótesis es que ! ∀P ⊂ N, ∀n ∈ N, ∀k ∈ N, (k < n ⇒ k ∈ P ) =⇒ n ∈ P =⇒ P = N y nuestor objetivo es demostrar que ∀M ⊂ N, M 6= ∅ =⇒ M tiene primer elemento Sea entonces M un subconjunto de los naturales, y hagamos de cuenta que M no tiene un mínimo elemento. Llamemos P = N − M , y veamos que P satisface el requisito del PI2. Sea n cualquier número natural, y supongamos que todos los naturales estrictamente menores que n están en P . Luego, ningún natural menor que n está en M . Entonces, ¿puede ser que n ∈ M ? No, pues sino n sería elemento mínimo en M , pero hemos supuesto que M no tiene elemento mínimo. Entonces, n ∈ / M , por lo que n ∈ P . O sea que P satisface el requisito del PI2, que al ser aceptado como verdadero fuerza a que P = N. Entonces es M = ∅. ¿Qué hemos demostrado? Que si un subconjunto de los naturales no tiene mínimo elemento, entonces es el conjunto vacío. Esto es equivalente (por contrarrecíproca) a que si un subconjunto de los naturales no es vacío, entonces tiene mínimo elemento. 3. PBO=⇒PCMC. Tenemos como hipótesis que y queremos probar que ∀M ⊂ N, M 6= ∅ =⇒ M tiene primer elemento ∀P ⊂ N, ∀n ∈ N, n ∈ / P ⇒ ∃k ∈ N : (k < n ∧ k ∈ / P) ! =⇒ P = N Sea P ⊂ N satisfaciendo que ∀n ∈ N, n ∈ / P =⇒ ∃k ∈ N : (k < n ∧ k ∈ / P ) . Hagamos M = N − P . Si fuese M 6= ∅, por el PBO tendría un elemento mínimo m. Por la definición de M , se tiene que m ∈ / P. Pero como P satisface el requisito del PCMC, existiría un natural k < m tal que k ∈ / P , por lo que k ∈ M . Pero esto es una contradicción, pues debe ser k ≥ m ya que m es el primer elemento en M . La contradicción provino de suponer que M 6= ∅. Entonces debe ser M = ∅, y de allí que P = N. 4. PCMC=⇒PI1. Aquí la hipótesis es que ! =⇒ P = N ∀P ⊂ N, ∀n ∈ N, n ∈ / P ⇒ ∃k ∈ N : (k < n ∧ k ∈ / P) 5. APLICACIÓN A LA DEMOSTRACIÓN DE PROPOSICIONES 11 y debemos demostrar que ∀P ⊂ N, 0 ∈ P ∧ (∀n ∈ N, n ∈ P ⇒ n + 1 ∈ P ) =⇒ P = N Sea entonces P ⊂ N satisfaciendo los dos requisitos del PI1. Debemos ver que P = N. Supongamos que eso no fuese cierto, es decir, P 6= N. Luego, por el PCMC (versión contrarrecíproca), hay un n ∈ N tal que n ∈ / P pero ∀k < n, k ∈ P . Tal n no puede ser 0, pues hemos supuesto que 0 ∈ P . Entonces es n > 0. Pero entonces n − 1 ∈ P pues n − 1 < n. Y como P satisface también el segundo requisito del PI1, ya que n − 1 ∈ P , concluiríamos que n ∈ P , contradiciendo que n ∈ / P . La contradicción provino de suponer P 6= N. Luego, es P = N. 5. Aplicación a la demostración de proposiciones Supongamos que queremos demostrar una proposición del estilo “∀n ∈ N, p(n)”, con p(n) predicado sobre la variable natural n. Como ya dijimos, esto equivale a hacer P = {n ∈ N : p(n) es verdadera} y comprobar si P = N. Por el PI1, esto se satisface si 0 ∈ P y si ∀n ∈ N, n ∈ P ⇒ n+1 ∈ P . Por la definición de P , estos últimos equivalen a ver si p(0) es verdadera y si suponiendo p(n) verdadera puede deducirse que p(n + 1) también lo es. Arribamos entonces a la siguiente formulación del PI1 para demostrar la veracidad de “∀n ∈ N, p(n)”. Sea p(n) un predicado (sobre la variable natural n) que satisfaga simultáneamente: a) p (0) es verdadero b) ∀n ∈ N, si p(n) es verdadero, entonces p (n + 1) es también verdadero Entonces, la proposición “∀n ∈ N, p(n)” es verdadera. Ejemplo 1.10. Verificar que ∀n ∈ N, 1 + n = n + 1. La forma proposicional p(n) a considerar es “1 + n = n + 1”. 1. Primero verifiquemos que p (0) es verdadera, es decir, que 1 + 0 = 0 + 1. Es cierto, pues ambos miembros de la igualdad valen 1. 2. Ahora, siendo n cualquier natural, suponemos p(n) verdadero: 1 + n = n + 1. Tomando eso como cierto, debemos ver que p(n + 1) también lo es, es decir, que 1 + (n + 1) = (n + 1) + 1. Por propiedad asociativa y en virtud de la hipótesis de inducción tenemos que 1 + (n + 1) = (1 + n) + 1 = (n + 1) + 1, es decir, hemos probado la igualdad que queríamos. Ya que se cumplen los dos requisitos del PI1 para la proposición analizada, concluimos que ésta es verdadera, es decir, ∀n ∈ N, 1 + n = n + 1. Ejemplo 1.11. Decidir si es cierto que ∀n ∈ N, 2n ≥ 1. La forma proposicional p(n) a considerar es “2n ≥ 1”. 1. Primero verifiquemos que p(0) es verdadera, es decir, que 20 ≥ 1. Es cierto, pues 20 = 1. 2. Ahora, siendo n cualquier natural, suponemos p(n) verdadero: 2n ≥ 1. Tomando eso como cierto, debemos ver que p(n + 1) también lo es, es decir, que 2n+1 ≥ 1. Por propiedades de las potencias, 2n+1 = 21 · 2n = 2 · 2n . Por hipótesis inductiva, se tiene que 2 · 2n ≥ 2 · 1 = 2 ≥ 1, de modo que, por transitividad de la relación ≥, es 2n+1 ≥ 1, según queríamos probar. Ya que se cumplen los dos requisitos del PI1 para la proposición analizada, concluimos que ésta es verdadera, es decir, ∀n ∈ N, 2n ≥ 1. Ejemplo 1.12. Analizar el valor de verdad de la proposición ∀n ∈ N, 2n + 2 > n En este ejemplo, p(n) es “2n + 2 > n”. 1. Comenzamos verificando la base de la inducción (el caso n = 0): hay que ver si 20 + 2 > 0. Eso es cierto, pues 20 + 2 = 3 > 0. 2. Ahora suponemos p(n) verdadero, o sea que nuestra hipótesis de inducción es que 2n + 2 > n. Debemos, en base a esto, demostrar que 2n+1 + 2 > n + 1. Aprovechamos nuestro conocimiento de la potenciación para decir que 2n+1 + 2 = 2n 21 + 2 = 2n + (2n + 2). Ahora, aprovechamos nuestra hipótesis inductiva para decir que 2n + (2n + 2) > 2n + n ≥ n + 1 (hemos usado que 2n ≥ 1 cualquiera sea n, cosa que hemos verificado en el ejemplo 1.11). Por transitividad, tenemos entonces que 2n+1 + 2 > n + 1, o sea, el p(n + 1) que queríamos probar. Habiendo verificado que los dos requisitos del PI1 se satisfacen, podemos concluir la veracidad de la proposición ∀n ∈ N, 2n + 2 > n. Es de destacar que, en el proceso de verificación por inducción, es de fundamental importancia vigilar el cumplimiento de los dos requisitos, para no obtener conclusiones erróneas. 12 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN Ejemplo 1.13. Decidir si es cierto que ∀n ∈ N, n5 − 10n4 + 35n3 − 50n2 + 24n = 0. Aquí, p(n) es “n5 − 10n4 + 35n3 − 50n2 + 24n = 0”. Claramente es verdadero para n = 0 (y dicho sea de paso, para n = 1, 2, 3 y 4, lo que puede verse fácilmente por factorización: n5 − 10n4 + 35n3 − 50n2 + 24n = n(n−1)(n−2)(n−3)(n−4)). Pero del hecho que, para un n cualquiera, se tenga que n5 −10n4 +35n3 −50n2 +24n sea igual a 0, no puede inferirse que la expresión (n + 1)5 − 10(n + 1)4 + 35(n + 1)3 − 50(n + 1)2 + 24(n + 1) vaya a ser también igual a 0 (probar con n = 4). Si sólo nos limitáramos a verificar el requisito de ser p(0) verdadero para comprobar la veracidad de la afirmación, caeríamos en un error, pues la proposición es falsa. De paso, este ejemplo nos muestra que una inducción (experimental) sin un razonamiento, o sin búsqueda de razones, puede llevarnos a conclusiones erróneas, por más casos experimentales que verifiquemos. Ejemplo 1.14. ¿Verdadero o falso?: “Todo número natural es igual a su sucesor”. En símbolos: ∀n ∈ N, n = n + 1. En este caso, p(n) es “n = n+1”. Supongámosla verdadera para n, es decir, supongamos n = n+1. Sumando 1 a cada miembro, llegaríamos a que (n + 1) = (n + 1) + 1, es decir, p(n + 1) sería verdadera. Luego, se satisface el segundo requisito del PI1. Sin embargo, sería equivocado tildar a la proposición como verdadera por esa sola comprobación. Falta verificar p(0). Y resulta que p(0) es falsa. Luego, la proposición es falsa. También se puede adaptar el PI2 para la demostración de proposiciones. La formulación del mismo resulta así: Sea p(n) un predicado (sobre la variable natural n) que satisfaga: ∀n ∈ N, si p (k) es verdadero para todo natural k < n, entonces p(n) es también verdadero. Entonces, la proposición “∀n ∈ N, p(n)” es verdadera. Remarquemos que, si bien no está explícitamente escrito, tarde o temprano debe verificarse que p(0) es verdadera (está implícitamente pedido en el requisito, para el caso n = 0). Ejemplo 1.15. Demostrar que ∀n ∈ N, 2n + 2 > n (la misma que hace un rato demostramos por el PI1). Sea n ∈ N. Debemos suponer verdadera la siguiente hipótesis inductiva: para todo k natural menor que n, 2k + 2 > k y tratar, a partir de ello, de deducir que 2n + 2 > n. A efectos de aplicar, de algún modo, la hipótesis de inducción, debemos trabajar sobre la expresión 2n + 2. Tal vez, la mejor forma de hacerlo sea notar que 2n + 2 = 2 · 2n−1 + 2 = 2n−1 + 2n−1 + 2. Si bien n − 1 es estrictamente menor que n, no sería un número natural si fuese n = 0 (y, por lo tanto, no podríamos usar la hipótesis de inducción de que 2n−1 + 2 > n − 1). Esto nos hace ver que, para demostrar el cumplimiento del requisito del PI2 en este caso, podemos considerar dos casos: el caso n = 0 y el caso n ≥ 1 (como dijimos, tarde o temprano necesitamos verificar p(0) por separado): 1. Para n = 0: lo que hay que probar es que si para todo k natural menor que 0, 2k + 2 > k, entonces 20 + 2 > 0. Alcanza con ver que el consecuente de esta última implicación es verdadero. Y lo es, pues 20 + 2 = 1 + 2 = 3 > 0. 2. Para n ≥ 1, hacemos la descomposición de 2n + 2 como decíamos más arriba, pero ya sin el peligro de que n − 1 no sea natural: 2n + 2 = 2 · 2n−1 + 2 = 2n−1 + 2n−1 + 2. Ahora sí, con total seguridad, aplicamos la hipótesis de inducción (caso k = n − 1) para decir que 2n−1 + 2n−1 + 2 > 2n−1 + n − 1 ≥ n pues 2n−1 − 1 ≥ 0 cuando n ≥ 1. Por transitividad, tenemos entonces que 2n + 2 > n, según queríamos. Acabamos de verificar que se cumple el requisito del PI2, es decir, que la implicación involucrada se cumple para todo n natural. Por lo tanto, estamos en condiciones de afirmar que la proposición bajo estudio es verdadera. Ejemplo 1.16. Consideremos la función de N en N definida por: n si n es par 2 f (n) = n + 1 si n es impar Nos interesa ahora la aplicación reiterada de esta función a partir de un cierto número natural, como vemos en los siguientes ejemplos: 1. f (3) = 4, f (4) = 2, f (2) = 1. 2. f (9) = 10, f (10) = 5, f (5) = 6, f (6) = 3, f (3) = 4, f (4) = 2, f (2) = 1. Es decir, estamos haciendo f f · · · f (n0 ) · · · , la composición de f consigo misma un cierto número de veces. Designamos f (m) (n0 ) a la composición de f consigo misma una cantidad m de veces. De los ejemplos anteriores, vemos que f (3) (3) = 1, f (3) (9) = 6, f (7) (9) = 1. Por el PI2, probaremos que empezando con cualquier n y 5. APLICACIÓN A LA DEMOSTRACIÓN DE PROPOSICIONES 13 aplicando reiteradamente f , tarde o temprano obtenemos 0 o 1. Es decir, mostraremos que ∀n ∈ N, ∃m ≥ 1 : f (m) (n) ≤ 1. La forma proposicional p(n) es ∃m ≥ 1 : f (m) (n) ≤ 1. Verificamos primero para n = 0: basta con tomar m = 1, pues f (1) (0) = f (0) = 0 ≤ 1. Para facilitar la demostración, también veremos que para n = 1 se cumple: tomando m = 2, tenemos f (2) (1) = f f (1) = f (2) = 1, así que p(1) es también verdadera. Ahora sea n ∈ N, y supongamos que para todo k < n existe m ≥ 1 tal que f (m) (k) = 1. Podemos considerar que n ≥ 2 pues los otros casos ya fueron demostrados. Si n es par, es f (n) = n/2, que es un natural menor quen, y entonces, por hipótesis inductiva, existe ′ ′ ′ m′ ≥ 1 tal que f (m ) (n/2) = 1. Por lo tanto, f (m ) f (n) = 1, es decir, f (m +1) (n) = 1. Luego, basta con tomar m = m′ + 1 ≥ 1 para tener f (m) (n) ≤ 1. Si n es impar, es f (n) = n + 1, y f (2) (n) = (n + 1)/2, que n. Entonces, por que es un natural menor ′ (m′ ) (2) = 1. Por lo tanto, f f (n) = 1, es decir, hipótesis inductiva, existe m′ ≥ 1 tal que f (m ) n+1 2 ′ (m +2) ′ (m) f (n) = 1. Luego, basta con tomar m = m + 2 ≥ 1 para tener f (n) ≤ 1. Luego, sea n par o impar, tenemos que p(n) es cierta. Como se satisface el requisito del PI2, la proposición ∀n, p(n) resulta verdadera. Atención: el requisito del PI2 pide una verificación para todo n natural. No puede quedar ninguno fuera de esta verificación, pues de lo contrario podríamos incurrir en errores, como mostramos ahora. Ejemplo 1.17. Usando el PI2, “mostraremos” que ∀n ∈ N, 2n = 1. Sea n ∈ N. Supongamos que para todo k < n se verifique 2k = 1. Es decir, 20 = 21 = 22 = · · · = 2n−1 = 1. Entonces, 2n = 2n−1 21 = 1 · 1 = 1. Lista la demostración. Obviamente, hemos incurrido en alguna equivocación, o nos falta algo. ¡No puede ser que la función exponencial sea constante! Veamos un poco: cuando escribimos 2n = 2n−1 21 y aplicamos nuestra hipótesis de inducción, estamos confiando ciegamente en que n − 1 y 1 son dos naturales estrictamente menores que n (sólo así estamos autorizados a aplicar la hipótesis de la inducción). Pero n − 1 es natural sólo en el caso en que n ≥ 1, y 1 es estrictamente menor que n sólo en el caso en que n ≥ 2. Por lo tanto, lo que hemos hecho en la (errónea) demostración anterior es verificar el cumplimiento del requisito del PI2 sólo para los n ≥ 2. Como se debe verificar para todo n, faltan considerar los casos n = 0 y n = 1. Es decir, faltan comprobar: 1. Si p(k) es verdadero para todo k < 0, entonces p(0) es verdadera. 2. Si p(k) es verdadero para todo k < 1, entonces p(1) es verdadera. Reemplazando p(k), re–enunciemos las dos cosas que faltan comprobar: 1. Si 2k = 1 para todo k < 0, entonces 20 = 1. Se trata de una implicación verdadera, pues su antecedente y su consecuente son ambos verdaderos. 2. Si 2k = 1 para todo k < 1, entonces 21 = 1. Como el único natural menor que 1 es 0, hay que demostrar que suponiendo 20 = 1, es 21 = 1. Es evidente que es falsa (pues 21 6= 1), aunque en nuestra demostración falaz de más arriba pareciera haber quedado demostrada. Pero ya hemos explicado por qué la demostración no incluía el caso n = 1 (que en definitiva es el único que falla). Resumiendo, si alguien nos demuestra que ∀n ∈ N, 2n = 1 escribiendo la demostración falaz de más arriba, debemos decirle: “muy bonito todo lo que hiciste, está muy bien. Pero te falta probar los casos n = 0 y n = 1. Al caso n = 0 te lo creo. ¿Me mostrarías, por favor, el caso n = 1?” e ir a tomar tranquilos una cerveza mientras el otro pobre se aboca a la imposible tarea de demostrar que si 20 = 1, entonces 21 = 1. Y la formulación del PCMC, versión proposicional, es así: Sea p(n) un predicado (sobre la variable natural n) que satisfaga: ∀n ∈ N, si p(n) es falso, entonces existe un natural k < n tal que p (k) es también falso Entonces, la proposición “∀n ∈ N, p(n)” es verdadera. Ejemplo 1.18. Considerar la siguiente función f de naturales en naturales: 1 si n = 0 f (n) = 2f (n − 1) si n 6= 0 Así, f (0) = 1, f (1) = 2f (0) = 2 · 1 = 2, f (2) = 2f (1) = 2 · 2 = 4, f (3) = 2f (2) = 2 · 4 = 8, etc. Conjeturamos entonces que, para todo n ∈ N, es f (n) = 2n . Lo demostraremos usando el PCMC. Nuestra proposición p(n) es “f (n) = 2n ”. Supongamos que hubiera un contraejemplo, es decir, p(n) es falso para algún n ∈ N. Esto quiere decir que f (n) 6= 2n . Claro que no puede ser n = 0, pues f (0) = 1 y 20 = 1, de donde f (0) = 20 . Entonces debe ser n ≥ 1. En ese caso, f (n) = 2f (n − 1), por lo que 2n 6= 2f (n − 1), y entonces 2n−1 6= f (n − 1). Hagamos 14 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN k = n − 1, que es natural (pues es n ≥ 1) estrictamente menor que n. Llegamos entonces a que f (k) 6= 2k , es decir, k es un contraejemplo, y menor que n. En síntesis, hemos demostrado que si hubiera un contraejemplo (n), habría un contraejemplo menor (k). Luego, por el PCMC, es verdadera la proposición ∀n ∈ N, f (n) = 2n . 5.1. Algunas variantes. • Supongamos que deseamos probar una proposición del tipo “ ∀n ≥ n0 , p(n)”, en donde n0 es un natural dado (no necesariamente 0) y n es una variable natural. El PI1 adaptado a este caso consiste en vigilar: 1. p (n0 ) es verdadera, y 2. ∀n ≥ n0 , suponiendo que p(n) es verdadera, demostrar que p(n + 1) es también verdadera. El fundamento de esta adaptación es sencillo: las proposiciones ∀n ≥ n0 , p(n) y ∀n ∈ N, p (n + n0 ) son equivalentes (pues ambas son verdad si y sólo si son verdaderas p (n0 ) , p (n0 + 1) , p (n0 + 2), etc). Por el PI1, “∀n ∈ N, p (n + n0 )” es cierta si p (n0 ) es cierta y si para cualquier n ∈ N, el suponer p (n + n0 ) verdadera implica que p (n0 + n + 1) también lo es; esto último es lo mismo que ver si para cualquier n ≥ n0 se tiene que p (n) implica p (n + 1). Nótese que el método también andaría bien en caso de ser n0 un entero (no necesariamente natural), y n variable entera. Ejemplo 1.19. Mostrar que ∀n ≥ 4, 2n > n + 11. 1. ¿Es p(4) verdadera? Sí, pues 24 = 16 > 4 + 11 = 15. 2. Sea n cualquier natural mayor o igual que 4, y supongamos p(n) verdadera, es decir, 2n > n + 11. ¿Es p(n + 1) verdadera? Es decir, ¿es cierto que 2n+1 > n + 12? Veamos: 2n+1 = 2 · 2n > 2(n + 11) = n + 22 + n > n + 12. Entonces, se cumple el segundo requisito del PI1 adaptado. Por lo tanto, la proposición queda demostrada. • Más generalmente, supongamos que deseamos probar una proposición del tipo “∀n ∈ A, p(n)”, donde p(n) es un predicado en la variable natural n y A es un subconjunto infinito de N, pero no todo N. Por ejemplo, “∀n natural impar, p(n)”. Esto equivale a “∀n ∈ N, p(2n + 1)”, por lo que podemos intentar demostrar esta última por alguno de los métodos vistos, por ejemplo PI1, que exigiría en este caso probar primero la veracidad de p(1), y luego, suponiendo p(2n + 1) verdadero, probar p(2n + 3). • Supongamos que deseamos probar una proposición del tipo “∀n ∈ Z, p(n)”, donde p(n) es un predicado en la variable entera n. Esa proposición es equivalente a la conjunción ∀n ∈ N, p(n) ∧ ∀n ∈ N, p(−n) de modo que una táctica puede ser probar, por separado, cada proposición por alguno de los métodos vistos. • Podemos extender los métodos vistos a proposiciones que involucren dos o más variables naturales. Por ejemplo, ∀m, n ∈ N, p(m, n) en donde p(m, n) es un predicado en las variables naturales m y n. Para usar el PI1, una técnica puede ser tomar un m arbitrario (por claridad notacional podríamos llamarlo m0 ) y demostrar que p (m0 , 0) es verdadera y que, cualquiera sea n ∈ N, p (m0 , n) implica p (m0 , n + 1) (observar que habiendo fijado m0 , estamos haciendo inducción en la variable n). Ejemplo 1.20. Mostrar que ∀m, n ∈ N, (m + 1)(n + 1) ≥ 1. En este caso, p(m, n) es “(m + 1)(n + 1) ≥ 1”. Sea m0 cualquier natural, y demostremos, por inducción matemática en la variable n, que ∀n ∈ N, p (m0 , n): 1. p (m0 , 0) es “(m0 + 1) (0 + 1) ≥ 1”. Es verdadera, pues, siendo m0 ≥ 0, es (m0 + 1) (0 + 1) = m0 + 1 ≥ 0 + 1 = 1. 2. Supongamos ahora que p (m0 , n) es verdadera, siendo n un natural arbitrario. Vale decir, supongamos que (m0 + 1) (n + 1) ≥ 1. Debemos ver que p (m0 , n + 1) es también cierta, es decir, que (m0 + 1) (n + 2) ≥ 1 Desarrollando, y aplicando hipótesis de inducción, tenemos: (m0 + 1) (n + 2) = ≥ (m0 + 1) (n + 1 + 1) = (m0 + 1) (n + 1) + (m0 + 1) 1 + (m0 + 1) ≥ 1 Así que se satisfacen ambos requisitos del PI1 para p (m0 , n). Por lo tanto, para el m0 elegido, es cierta la proposición ∀n, p (m0 , n). Pero m0 se eligió arbitrariamente en el conjunto de los naturales. Por lo tanto, se tiene que ∀m, ∀n, p(m, n), como queríamos. También, dada una proposición del tipo ∀m ∈ N, ∀n ∈ N, p(m, n), podemos designar q(m) al predicado ∀n ∈ N, p(m, n) y probar por inducción sobre m la proposición ∀m ∈ N, q(m). En este caso, la base de la inducción es ∀n ∈ N, p(0, n) (que a su vez puede ser probada por inducción sobre n o por cualquier otro método). Luego, la hipótesis de inducción es que ∀n ∈ N, p(m, n) y la tesis de inducción es ∀n ∈ N, p(m + 1, n). 6. ALGUNAS PROPIEDADES DEL CONJUNTO DE LOS NÚMEROS NATURALES 15 Ejemplo 1.21. Demostrar que ∀m, n ∈ N, m + n = n + m, por el método arriba descripto. Designemos por p(m, n) a la forma proposicional m + n = n + m. La base de la inducción consiste en probar que ∀n ∈ N, 0 + n = n + 0. Resulta cierta pues el 0 es el neutro de la suma. Ahora, sea m cualquier natural, y supongamos que ∀n ∈ N, m + n = n + m. Debemos probar que ∀n ∈ N, (m + 1) + n = n + (m + 1). Sea n cualquier natural. De la hipótesis inductiva y la asociatividad de la suma, se tiene que (m + 1) + n = (1 + m) + n = 1 + (m + n). Nuevamente por hipótesis inductiva y asociatividad, tenemos que 1 + (m + n) = 1 + (n + m) = (1 + n) + m. Usando que 1 conmuta con cualquier natural (que demostramos en el ejemplo 1.10), es (1 + n) + m = (n + 1) + m = n + (1 + m). Luego, (m + 1) + n = n + (m + 1), según queríamos probar. • Siguiendo con el mismo tipo de proposiciones del inciso anterior, podemos aplicar el PCMC de la siguiente forma: suponiendo que el par (m, n) es contraejemplo, demostrar que existe un contraejemplo (m′ , n′ ) menor (en algún sentido) que (m, n). Por ejemplo, menor en el sentido de las primeras componentes (m′ < m), o menor en el sentido de las segundas componentes (n′ < n), o menor en suma de componentes (m′ + n′ < m + n), etc. Ejemplo 1.22. La definición de factorial de un número natural es: 1 si n = 0 n! = n(n − 1)(n − 2) . . . 2 · 1 si n 6= 0 Observar que el factorial de cualquier número siempre es un entero positivo, y que si n > 0, es n! = n(n−1)!. Demostrar: ∀m, n ∈ N, m > n =⇒ m! ≥ n! Aquí, p(m, n) es “m > n =⇒ m! ≥ n!”. Sea (m, n) un contraejemplo, es decir, m > n ∧ m! < n!. No puede ser n = 0, por la propia definición de factorial. Entonces es m > n ≥ 1. Pero entonces m(m − 1)! < n(n − 1)! < m(n − 1)!. Cancelando, se tiene (m − 1)! < (n − 1)!. Por otro lado, es m − 1 > n − 1, pues hemos supuesto m > n. Hagamos m′ = m − 1 y n′ = n − 1. De lo visto, es m′ > n′ ∧ m′ ! < n′ !, es decir, el par (m′ , n′ ) es también contraejemplo, y más chico que (m, n) (en el sentido de la primera componente). Luego, la proposición es verdadera. 6. Algunas propiedades del conjunto de los números naturales Para poder estudiar propiedades en el conjunto de los números naturales, es necesario aceptar ciertos enunciados como base: son los axiomas acerca de los números naturales. Durante mucho tiempo, los matemáticos han buscado minimizar la lista de axiomas, es decir, tomar los axiomas más simples y en menor cantidad posible, que permitan construir la teoría de los números naturales tal como la conocemos, en donde valgan propiedades como la conmutatividad de la suma, la asociatividad del producto, etc., y a partir de los cuales puedan derivarse todas las proposiciones verdaderas acerca de los naturales. Hay consenso en que quien mejor hizo la tarea de minimización es el lógico y matemático italiano Giuseppe Peano, a través de los siguientes cinco axiomas: 1. 0 ∈ N. 2. ∀a ∈ N, a + 1 ∈ N. 3. ∀a, b ∈ N, a 6= b ⇒ a + 1 6= b + 1. 4. ∀a ∈ N, a + 1 6= 0. 5. Es válido el principio del buen orden. Dejamos el interrogante de si estos cinco axiomas son suficientes para obtener todas las proposiciones verdaderas sobre los números naturales. El tema es profundo, y se trata detalladamente en un curso posterior: el de Fundamentos de la Matemática. El hecho de incorporar axiomáticamente el principio del buen orden (o, equivalentemente, los principios de inducción), permite demostrar muchas propiedades básicas de los números naturales (que tal vez en algún curso anterior han sido presentadas como axiomas). Por ejemplo, la conmutatividad de la suma. Varias de esas demostraciones se verán con todo detalle en el mismo curso de Fundamentos de la Matemática, así que aquí sólo nos limitaremos a enunciar algunas propiedades básicas, deducibles a partir de los cinco axiomas de Peano, y que nos serán de mucha utilidad en lo sucesivo: 1. ∀a, b ∈ N, a + b ∈ N ∧ ab ∈ N (ley de cierre de la suma y del producto). 2. ∀a, b ∈ N, a + b = b + a ∧ ab = ba (ley conmutativa de la suma y del producto). 3. ∀a, b, c ∈ N, a + (b + c) = (a + b) + c ∧ a (bc) = (ab) c (ley asociativa de la suma y del producto). 4. ∀a, b, c ∈ N, a + c = b + c ⇔ a = b (ley cancelativa de la suma). 5. ∀a, b, c ∈ N, (ac = bc ∧ c 6= 0) ⇒ a = b (ley cancelativa del producto por un número no nulo). 6. ∀a, b, c ∈ N, a + c > b + c ⇒ a > b (cancelación de términos en desigualdades). 7. ∀a, b, c ∈ N, ac > bc ⇒ a > b (cancelación de factores en desigualdades). 8. ∀a, b, c, d ∈ N, (a > c ∧ b > d) ⇒ (a + b > c + d ∧ ab > cd) (uniformidad). 9. ∀a ∈ N, a + 0 = a ∧ a · 1 = a (existencia del neutro de la suma y del producto). 16 1. PRINCIPIO DE INDUCCIÓN Y PRINCIPIO DE BUENA ORDENACIÓN 10. ∀a, b, c ∈ N, a (b + c) = ab + ac (ley distributiva del producto respecto de la suma). 11. ∀a, b ∈ N, ab = 0 ⇔ (a = 0 ∨ b = 0) (no hay divisores de 0). Capítulo 2 EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD En este capítulo, trataremos las propiedades básicas del conjunto de los números enteros, y definiremos un concepto crucial para el entendimiento de dicho conjunto: el de divisibilidad. Ésta conduce a la definición de número primo, fundamental en la teoría de números y en muchas de sus aplicaciones. Un buen entendimiento de la divisibilidad entre enteros arranca con el algoritmo de la división de enteros. Este último concepto se comprende mejor si primero se analiza el algoritmo de la división de números naturales. Por esa razón, primero abordaremos el tema de la división y divisibilidad entre números naturales, para luego extendernos de manera natural al conjunto de los enteros. Más arriba hemos mencionado la palabra algoritmo. Sin pretender dar una definición formal de lo que significa (aún cuando la tiene), digamos que un algoritmo es un mecanismo o procedimiento para llevar a cabo una tarea (o, más precisamente, para evaluar una determinada función). Como tal, un algoritmo incluye una serie de instrucciones a seguir por el usuario para llevar a cabo la tarea. En este curso, trataremos de compenetrarnos con varios algoritmos relativos a los números naturales y enteros, pero de un nivel de simplicidad elemental, en el sentido de ser (al menos relativamente) fáciles de comprender y de aplicar. Por eso, vamos a dedicar unas líneas al abc de la notación algorítmica, es decir, a lo básico que usaremos nosotros al respecto. No hay nada que temer: la mayoría de las cosas responden al sentido común y se refieren a conceptos que no nos resultarán del todo extraños. En el apéndice A veremos un modo de usar una computadora para materializar estas ideas. 1. La notación algorítmica Considérese la siguiente función de reales en reales: x2 si x > 0 (*) f (x) = 1 − x si x ≤ 0 La función, así como está, se dice que está definida por ramas: en esencia, para determinar el valor de la función en un dado argumento x0 , primero debemos ver si x0 es positivo o no; en caso de serlo, elevarlo al cuadrado y ése es el valor de f (x0 ), y en caso de no ser x0 positivo, calcular 1 − x0 y ése es el valor de f (x0 ). Entonces, podríamos haber especificado la función del siguiente modo menos simbólico, o más coloquial: (**) f (x) = si (x > 0) contestar x2 sino contestar 1 − x Nótese que, a la hora de hacer una evaluación, no hay diferencias con la expresión (*), excepto que queda explícito que primero hay que verificar el cumplimiento de una cierta condición (si el argumento x es mayor que 0) antes de contestar, y que lo que hay que contestar depende de si se cumple o no la condición. Escrita así, aparenta ser una lista de instrucciones a seguir antes que una función real de variable real (aunque por supuesto que, aún escrita en esa forma, también lo es). En definitiva, la función escrita como en (**) da un mecanismo para calcular f (x) de acuerdo al argumento x. Decimos que está escrita en la notación algorítmica, también llamada notación funcional, o pseudocódigo, que nosotros emplearemos para explicitar cómo se calculan ciertas funciones. Reiteramos, una función escrita en notación algorítmica no es más que una lista de instrucciones que hay que ir obedeciendo al pie de la letra, para hacer una determinada evaluación. Es una especie de manual de procedimientos que resume, de manera global, cómo ha de procederse para llevar a cabo una determinada tarea. Cuando se sustituye al argumento x por un valor concreto, y se siguen las instrucciones (cada vez que aparezca x en esas instrucciones, hay que reemplazarlo por ese valor concreto), se obtiene un caso o instancia del algoritmo. Cuando se usa el algoritmo para evaluar una instancia, por ejemplo para x = 6, se dice que se ha invocado (o corrido, o llamado, o ejecutado) el algoritmo con el argumento x = 6. No es obligatorio que una función tenga un solo argumento. Por ejemplo: M (x, y) = si (x ≥ y) contestar x sino contestar y 17 18 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD Es fácil ver que esta función contesta el mayor entre x e y. Por esa razón, podríamos haber elegido un nombre más representativo de la función, en lugar del simple M (x, y). Podría haber sido, por ejemplo, máx(x, y). De paso, ejemplificamos que no es obligatorio que el nombre de una función sea de una sola letra. Recalquemos que toda función escrita en notación algorítmica debe comenzar con una línea en donde se especifica el nombre de la función y la lista de argumentos que recibe, entre paréntesis. Todo eso seguido de un signo “=”, para indicar que a partir de allí comienza la lista de instrucciones. 1.1. Las instrucciones básicas de la notación algorítmica. 1.1.1. Instrucciones de retorno. Una instrucción que no puede faltar en ningún algoritmo es contestar. Indica que lo que viene a continuación es el resultado de la evaluación de la función, o sea, lo que la función devuelve. Ese resultado puede ser un número, un par ordenado de números, un conjunto, etc.; depende de lo que se pretende que conteste el algoritmo (por ejemplo, un algoritmo para calcular el máximo de un conjunto numérico contestará un número, un algoritmo para calcular el cociente y resto de la división entre dos números naturales contestará un par ordenado, un algoritmo para obtener todos los primos menores o iguales que un cierto número natural devolverá un conjunto, y así). Si bien es obligatorio que aparezca al menos una vez, es frecuente que la instrucción contestar aparezca varias veces en un algoritmo, como ocurre en los ejemplos que hemos presentado más arriba. 1.1.2. Instrucciones de asignación. Puede darse el caso en que el procedimiento para evaluar una función no sea muy directo como en los ejemplos anteriores, sino que requiera de muchos cálculos intermedios para llegar a la respuesta final. Tal vez, esos cálculos demanden guardar temporalmente ciertos valores. Por esa razón, en la notación algorítmica contaremos con variables para guardar en ellas esos valores intermedios necesarios para llevar a cabo la evaluación de la función. Entonces, necesitamos instrucciones de asignación para asignar valores a variables. Instrucciones de este tipo comienzan siempre con la palabra sea (como en la demostración de teoremas). Por ejemplo, “sea z = 5” indica que, de ahora en más, durante la ejecución del algoritmo, cada vez que aparezca la variable z, ésta debe reemplazarse por el valor 5 (a menos que otra instrucción de asignación modifique el valor de la misma variable z). Ejemplo 2.1. Considerar la función de Z en Z dada por g(x) = sea n = x − 20 si (n > 2x) contestar 3n sino contestar 1 − nx 1. Evaluemos g(12). El argumento con que se invoca a la función (la notación indica que es x) debe establecerse en el valor 12. La primera instrucción a seguir es hacer n = 12 − 20 = −8. O sea, a partir de ahora, en todo el proceso de evaluación de g(12), n vale −8 (a menos que más adelante, durante la misma evaluación, encontrásemos otra orden de asignar otro valor a n). Luego hay que verificar si n > 2x: valiendo x = 12 y n = −8, la condición no se cumple, por lo que hay que ir por la línea del “sino” (enseguida nos ocuparemos más en detalle de este tipo de instrucciones), que indica contestar 1 − (−8)12. Luego, g(12) = 97. 2. Para evaluar g(−30), establecemos x = −30; luego, empezando con la primera instrucción del algoritmo, asignamos a n el valor −50. Ahora comparamos si −50 > 2(−30), y como eso es verdad, contestamos 3(−50) = −150. Luego, g(−30) = −150. A veces, en una operación de asignación, la variable que recibe el valor puede aparecer también a la derecha del operador “=” de asignación. Por ejemplo: “sea n = n · x”. Se sobreentiende que ambas variables a la derecha deben ya tener un valor previamente asignado, y que el valor de n a la derecha es el valor con que viene n hasta antes de ejecutar la actual instrucción de asignación. Por ejemplo, suponiendo que, de acuerdo a todas las instrucciones ejecutadas desde el inicio de un algoritmo, lleguemos con n = 8 y x = 3, hasta un punto en que nos topamos con la instrucción “sea n = n · x”; ésta hace que n pase a valer, de ahora en más, 24 (y x queda como estaba, es decir, valiendo 3, pues nadie dijo nada de asignarle a x un nuevo valor). Observación: jamás debe interpretarse una instrucción de éstas como una ecuación. Habrá circunstancias en que en una sola instrucción de asignación necesitemos asignar valores a varias variables. Usaremos para ello la notación de uplas ordenadas. Por ejemplo, la instrucción sea (a, b, c) = (7, 2, 9) indica asignar a a el valor 7, a b el 2, y a c el 9. 1.1.3. Instrucciones condicionales. Otro tipo de instrucción que puede aparecer en la especificación de un algoritmo (y que ya vimos en ejemplos anteriores) es la verificación de si una dada condición se cumple o no, y lo que hay que hacer en caso de que se cumpla, y lo que hay que hacer en caso de que la condición no se cumpla. Estas instrucciones se llaman condicionales. Típicamente, responden al siguiente esquema: si (condición) lista1 sino lista2 1. LA NOTACIÓN ALGORÍTMICA 19 donde condición es una proposición, y lista1 y lista2 son a su vez más conjuntos de instrucciones. En este caso, lo primero que hay que hacer es evaluar si la condición es verdadera; si lo es, las instrucciones que hay que seguir son las de lista1 (y no las de lista2), y si la condición es falsa, hay que ponerse a ejecutar todas las instrucciones de lista2 (ignorando completamente las instrucciones que haya en lista1). Por ejemplo, supongamos que má nos dice: “Hoy comemos fideos. Andá al almacén; si tienen harina y huevos, comprame un poco de ambos (así los amaso aquí) y, si no, traeme un paquete de fideos”. Si obedecemos la consigna al pie de la letra, la condición a verificar es si en el almacén tienen harina y huevos, lista1 sería “comprar harina y comprar huevos”, y lista2 sería “comprar un paquete de fideos”. Incluso habrá casos en que “sino lista2” puede faltar, y si la condición no se cumple, no hay que hacer nada con lista1, y pasar a la instrucción siguiente, si es que la hay. Sería como si mamá nos hubiese dicho “andá al almacén; si tienen harina y huevos, comprame un poco de ambos” (y no hacemos nada si no hay harina y huevos). O bien, “andá al almacén; si tienen harina y huevos, comprame un poco de ambos. ¡Ah, cierto que se nos acabó el azúcar! Comprame un kilo de azúcar, que seguro que tienen”. Si hubiera harina y huevos, compraríamos harina, huevos y azúcar, y, si no, compraríamos sólo el azúcar. En una instrucción condicional, puede que lista1 y/o lista2, como listas de instrucciones que son, tengan a su vez anidadas otras instrucciones condicionales. Ejemplo 2.2. Sea la siguiente función de enteros en enteros: h(x) = sea n = x − 20 si (n > 2x) contestar 3n sino sea n = n · x si (n es par) contestar 1 − nx sino contestar x2 (notar que hemos usado indentación, es decir, escritura con diferentes niveles de margen izquierdo, para facilitar la comprensión; si un condicional tiene “si” y “sino”, es mejor que ambas palabras estén al mismo nivel, y que las respectivas lista1 y lista2 queden más adentro todavía, especialmente si constan de varias instrucciones). El proceso de anidamiento puede ocurrir varias veces. 1.1.4. Invocación a otras funciones, y recursividad. Está permitido, en la notación algorítmica, que una función invoque a otra función que haya sido previamente definida (o que se definirá después). Tal invocación puede estar dentro de una instrucción de retorno, o de asignación (sólo a la derecha de “=”, obviamente), o en una condicional (ya sea en la condición y/o en lista1 y/o lista2). Podríamos llamar “función madre” a la que invoca a la otra, y “función hija” o “función auxiliar” a la invocada. Cuando en la ejecución de un algoritmo se llega a una instrucción que contiene una invocación a otra función, hay que abocarse a la tarea de evaluar la función hija, hasta obtener su valor, pero recordando en qué punto de la ejecución de la función madre se quedó, para reanudar a partir de allí la tarea una vez que hayamos evaluado a la función hija. Es como si estando en el almacén para comprar harina, huevos y azúcar, el dueño, después de vendernos harina y huevos, nos diga “haceme la gauchada de llevarle esta nota a mi esposa que vive al frente, después te sigo atendiendo; mil gracias”: suspendemos lo que estamos haciendo (la compra) para dedicarnos a la tarea de ayudar a nuestro prójimo, pero acordándonos de que cuando terminemos éso, volveremos al almacén a seguir con las compras; ¿en qué habíamos quedado? ¡Ah, sí! El azúcar. Ejemplo 2.3. Considerar las siguientes funciones f y j, de enteros en enteros: f (x) = si (x > 0) contestar x2 sino contestar 1 − x j(x) = 2 si (x es par) contestar f (x) sino sea k = x + f (3x) contestar f (k) − x Para calcular j (x0 ), hay que empezar por la primera instrucción de la función j (x), verificando si x0 es par. 1. Si lo es, hay que contestar el cuadrado de f (x0 ). Para eso, momentáneamente interrumpimos nuestras actividades dentro del desarrollo de j (x0 ), para abocarnos a calcular f (x0 ). Cuando lo tengamos, volveremos al punto de la ejecución de j (x0 ) en que quedamos, y nos preguntamos para qué queríamos f (x0 ). ¡Ah!, era para elevarlo al cuadrado y contestar eso como resultado de j (x0 ). 20 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD 2. Si x0 no era par, hay que ir por el “sino”. En este caso, primero hay que hacer una asignación: a k hay que darle el valor que resulta de sumar x0 con el resultado de la evaluación de f en 3x0 (para eso, suspendemos momentáneamente el cálculo con j y nos ponemos a calcular f (3x0 ), que una vez obtenido debe sumarse a x0 ). Luego procedemos a evaluar f (k) (nueva suspensión temporaria en el cálculo con j), y a ese resultado le restamos x0 . Lo que así resulte será el valor de j (x0 ) en caso de ser x0 impar. Ejemplos a verificar por el lector en relación a j (x): j (0) = 1, j (1) = 99, j (−2) = 9. De más está decir que la función hija puede, a su vez, invocar a otra función hija, y ésta a su vez a otra, y así sucesivamente. En esos casos, a la hora de ejecutar un algoritmo, hay que prestar mucha atención al punto en el que se queda al realizar cada nueva invocación, sin confundirse de puntos de suspensión temporal correspondientes a distintas invocaciones. Incluso está permitido que la función hija invoque a su función madre, como en el siguiente caso. Ejemplo 2.4. Considerar p(x) = si (x > 0) contestar x2 sino contestar q(1 − x) q(x) = 2 si (x es par) contestar p(2x) sino contestar x + 2 Supongamos que queremos p (−3): nos damos con que debemos evaluar q (4) y contestar eso como valor de p (−3). 2 Calculemos entonces q (4): vale p (8) , pues 4 es par. Calculemos por lo tanto p (8), que vale 64 porque 8 > 0. 2 ¿Para qué queríamos p (8)? Para contestar a q (4), que era p (8) = 642 = 4.096. ¿Para qué queríamos q (4)? Para contestar a nuestro p (−3) original, que vale justamente q (4). Luego, p (−3) = 4.096. Está permitido que, para evaluar una función, se invoque a otra función. Pero, sin dudas, uno de los mayores atractivos de la notación funcional está en permitir que una función se invoque a sí misma, con otros argumentos. Ya vimos un ejemplo de ésto en el Capítulo 1, cuando estudiamos la función definida de naturales en naturales dada por 1 si n = 0 t (n) = 2t (n − 1) si n 6= 0 Ejemplo 2.5. En nuestra notación algorítmica, la función anterior se escribe así: t(n) = si (n = 0) contestar 1 sino contestar 2t(n − 1) Veamos cómo evaluar aquí t (3): Empezamos con n = 3, y en la primera línea verificamos que n no es 0, por lo cual debemos contestar 2t (2). Entonces, interrumpimos todo lo que estamos haciendo para abocarnos a la tarea de calcular t (2), y, una vez que lo tengamos, recordaremos para qué lo necesitábamos: para multiplicarlo por 2 y, de esa manera, saber cuánto vale t (3). ¿Y cómo calculamos t (2)? Claro que con el mismo algoritmo, salvo que con n = 2. Como en este caso n tampoco es 0, es t (2) = 2t (1). ¿Y t (1)? Con el mismo algoritmo, caso n = 1. Y vale 2t (0). ¿Y t (0)? Vale 1. Por lo tanto, t (1) = 2t (0) = 2 · 1 = 2. Por lo tanto, t (2) = 2t (1) = 2 · 2 = 4. Y finalmente t (3) = 2t (2) = 2 · 4 = 8. Cuando para evaluar una función dada hace falta usar esa misma función, pero con otros argumentos, se dice que la función se invoca a sí misma, recursivamente. Si el lector piensa un poco, se dará cuenta de que cuando suma dos números a través de sus representaciones decimales, está aplicando un algoritmo altamente recursivo. Por ejemplo, sumar 123 + 645 se reduce a sumar los dígitos 3 y 5 de la derecha, colocando el resultado de 8, y luego proceder a sumar los números 12 y 64, colocando el resultado a la izquierda del 8. Es decir, el algoritmo de suma se reduce a sumar los dígitos de la derecha y luego invocarse recursivamente con los mismos números excepto que sin el último dígito (es un poquito más complicado, pues puede haber un “me llevo uno”, pero en esencia es éso). La multiplicación y la división son también procedimientos recursivos. O sea que la recursividad 2. LOS NÚMEROS ENTEROS 21 está instalada en nuestras vidas desde hace mucho (¡aunque nosotros recién hoy vengamos a enterarnos!). La recursividad bien usada produce sorprendentes efectos, como tendremos oportunidad de ver en este curso. Cuidado con algoritmos recursivos como el siguiente: v(n) = si (n = 0) contestar 1 sino contestar v(n + 1) Si intentamos evaluar v (1), seremos conducidos a evaluar v (2), que nos llevará a calcular v (3), que... Entramos en un círculo vicioso del cual no saldremos jamás, excepto que optemos por abortar la ejecución del algoritmo, de la misma manera que muchas veces optamos por resetear la PC cuando ésta se ha colgado (es decir, cuando ha entrado en un ciclo sin salida). El diseño de algoritmos recursivos debe ser cuidadoso en este aspecto: no debe conducir a situaciones de ciclos infinitos. En general, un algoritmo recursivo debe contener casos de salida garantizada, (como el caso n = 0 en el ejemplo 2.5) y las sucesivas llamadas recursivas que se produzcan deben conducir a uno de esos casos de salida garantizada. Observar que, en el ejemplo 2.5, para calcular t (3) ha sido necesario utilizar el algoritmo 4 veces: una vez con n = 3, otra con n = 2, otra con n = 1 y otra con n = 0. Decimos entonces que fueron necesarias cuatro invocaciones al algoritmo t para calcular t (3). Podemos sospechar, y no nos equivocaremos, que, en general, el número de invocaciones a un algoritmo recursivo dependerá de cuáles sean sus argumentos. Muchas de las consideraciones que haremos en algoritmos que estudiemos en este curso harán inducción matemática sobre el número de invocaciones necesarias para un dado argumento. Por ejemplo, si queremos demostrar que la función del ejemplo 2.5 termina contestando 2n (es decir, que cualquiera sea n se tiene t (n) = 2n ) podemos proceder mostrando que: a) Para cuando se requiere una sola invocación, el algoritmo contesta lo que sospechamos, y b) Suponiendo que el algoritmo contesta lo que sospechamos cuando se requieren k invocaciones, mostrar que contesta lo que sospechamos cuando se necesitan k + 1 invocaciones. En el caso del ejemplo 2.5, sospechamos que cuando el argumento es n, el algoritmo contesta 2n . Verifiquémoslo procediendo como dijimos: 1. Si se necesita una sola invocación, es porque se hizo con n = 0. En ese caso, 20 = 1, y efectivamente t (0) = 1. Entonces, es cierto que t (n) = 2n para cuando se necesita una sola invocación al algoritmo. 2. Supongamos que toda vez que se necesitan k invocaciones al algoritmo para evaluar t en un dado n′ , ′ es cierto que t (n′ ) = 2n . Sea n tal que para calcular t (n) se necesiten k + 1 invocaciones. Está claro que la primera invocación es con n, y las k restantes surgen de invocar con n − 1. Nuestra hipótesis de inducción nos dice entonces que t (n − 1) = 2n−1 . Y entonces, de acuerdo a cómo está definido el algoritmo, es t (n) = 2t (n − 1) = 2 · 2n−1 = 2n . Entonces, es cierto que t (n) = 2n toda vez que la evaluación de t (n) requiera de k + 1 invocaciones al algoritmo t. Bueno, basta ya de teoría general de computación. Volvamos a la aritmética. 2. Los números enteros Ya tenemos conceptualizado al conjunto de los números naturales N, con sus operaciones básicas de suma y producto, y su orden usual. Nuestra meta es ahora presentar al conjunto de los números enteros, con sus operaciones básicas y su relación de orden, basándonos en los números naturales. Designemos por Z+ al conjunto de los naturales positivos, es decir, Z+ = {1, 2, 3, . . .}. Definamos Z− del siguiente modo: por cada elemento n de Z+ , fabriquemos un nuevo elemento anteponiéndole el signo −; es decir, consideremos −n. El conjunto de todos los elementos así obtenidos conforme n varía en Z+ es precisamente Z− . O sea, Z− = −n : n ∈ Z+ = {−1, −2, −3, −4, . . .} Ahora estamos en condiciones de escribir lo que para nosotros, en este curso, es el conjunto Z de los números enteros1, con sus operaciones básicas y su relación de orden usual (que resultarán coherentes con las de los números naturales, en el caso en que los operandos sean números naturales): Z = Z− ∪ N = Z− ∪ {0} ∪ Z+ = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} 1. Suma: Sean z1 y z2 dos enteros. a) Si ambos son naturales, usamos la suma habitual de números naturales. b) Si ambos están en Z− , digamos z1 = −n1 y z2 = −n2 para n1 , n2 ∈ Z+ , es z1 + z2 = − (n1 + n2 ). c) Si uno está en N y el otro en Z− , digamos z1 = n1 y z2 = −n2 para n1 ∈ N y n2 ∈ Z+ , distinguiremos dos casos: 1) Si n1 ≥ n2 , entonces z1 + z2 = n1 − n2 (la resta de ambos números naturales). 2) Si n1 < n2 , entonces z1 + z2 = − (n2 − n1 ). 2. Producto: Sean z1 y z2 dos enteros. a) Si al menos uno de ellos es 0, el producto es 0. 1Hay una manera formal de definir el conjunto de los números enteros a partir de los naturales, y se verá detalladamente en Fundamentos de la Matemática. 22 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD b) Si ambos son naturales, usamos el producto habitual de números naturales. c) Si uno está en Z+ y el otro en Z− , digamos z1 = n1 y z2 = −n2 para n1 ∈ N y n2 ∈ Z+ , entonces z1 z2 = − (n1 n2 ). d ) Si ambos están en Z− , digamos z1 = −n1 y z2 = −n2 para n1 , n2 ∈ Z+ , es z1 z2 = n1 n2 . Si z ∈ Z, −z representa a (−1) z, teniendo entonces que −0 = 0 y que − (−z) = z. 3. Orden: Sean z1 y z2 dos enteros. a) Si ambos son naturales, los comparamos con el orden usual de los naturales. b) Si uno está en N y el otro en Z− , es mayor el natural. c) Si ambos están en Z− , digamos z1 = −n1 y z2 = −n2 para n1 , n2 ∈ Z+ , será −n1 ≤ −n2 si n1 ≥ n2 (en esta última, estamos empleando el orden usual de los naturales). Los enteros menores que 0 se llaman enteros negativos, y los mayores que 0, enteros positivos. El módulo o valor absoluto de un entero z se denota, como usualmente, por |z|, y vale z si z ≥ 0, y −z si z < 0. Todas las propiedades conocidas acerca del módulo de números reales valen, por supuesto, para el conjunto de los enteros. Adviértase que, así como están definidas, las operaciones y relación de orden en Z coinciden con lo que sabemos de los cursos anteriores acerca de los enteros. Además, para z1 y z2 enteros, se cumple que z1 ≤ z2 si, y sólo si, existe n ∈ N tal que z1 + n = z2 . Es bastante directo verificar que la suma en Z es cerrada, asociativa, conmutativa, tiene elemento neutro 0, y que cada z ∈ Z tiene su inverso aditivo (u opuesto) que es −z. Con respecto al producto, es cerrado, asociativo, conmutativo y tiene elemento neutro, el 1. Además, se cumple la propiedad distributiva del producto respecto de la suma: ∀a, b, c ∈ Z, a (b + c) = ab + ac. Vale la ley cancelativa de la suma y del producto por un número no nulo en igualdades, la ley cancelativa de términos en desigualdades, la ley cancelativa de factores positivos en desigualdades, y mucho cuidado con la cancelación de factores negativos (no olvidarse de dar vuelta la desigualdad en ese caso). Además, al igual que en N, no hay divisores de 0: ab = 0 ⇔ (a = 0 ∨ b = 0). Debe notarse que Z, con su orden usual, no es un conjunto bien ordenado, pues por ejemplo Z− no tiene un mínimo elemento (ya que no existe un número natural que sea mayor que todos los otros números naturales). Sin embargo, dado cualquier número entero z0 , el conjunto Dz0 = {z ∈ Z : z ≥ z0 } es bien ordenado (adivine el lector por qué hemos usado la letra D de “Derecha”). En efecto, sea S cualquier subconjunto no vacío de Dz0 . Notemos que para cualquier z ∈ S, es z ≥ z0 , por lo que z − z0 ∈ N si z ∈ S. Hagamos T = {z − z0 : z ∈ S}, que resultará entonces ser subconjunto no vacío de N. Como tal, tiene mínimo elemento m. Ese m, por pertenecer a T , debe ser de la forma m′ − z0 para algún m′ ∈ S. ¿Puede haber algún elemento menor que m′ en S? No, porque de haber un n ∈ S tal que n < m′ , n − z0 pertenecería a T y cumpliría n − z0 < m′ − z0 = m, que no puede ser pues m es el mínimo elemento en T . Por lo tanto, m′ es el mínimo elemento de S. 3. La división de números naturales Citando a T. Hibbard, “el mejor modelo de un número natural es una fila de palos” (o de caramelos, o de personas, agrego yo). Sumar dos naturales equivale a poner las dos respectivas filas una a continuación de la otra y contar cuántos palos quedan en total. La resta a − b (con a ≥ b) quiere decir sacar de la fila de palos de a una cantidad de palos igual a los que haya en b, y ver cuántos quedan. Multiplicar a por b equivale a hacer b copias de los palos de a, una copia a continuación de la otra, y ver cuántos palos quedan en total. Vamos con la división ahora. Dividir conlleva la idea de repartir, o distribuir. En la división de números naturales, se trata de distribuir los caramelos que haya en una bolsa llamada dividendo entre los individuos que componen el divisor (se supone que hay siempre al menos un individuo allí) de la manera más equitativa posible, pero sin partir los caramelos (ni por la mitad, ni de ninguna otra forma). ¿Cómo se hace entonces éso? Supongamos que hay a caramelos y b receptores. El sentido común nos dice que primero veamos si hay suficientes caramelos para dar al menos uno a cada uno de los b personajes (o sea, que veamos si a ≥ b). 1. Si no es así, ya está lista la repartija: ninguno de los individuos recibe nada, es decir, reciben 0 caramelos cada uno. 2. Si fuese a ≥ b, pues bien, demos un caramelo a cada uno. Entonces, hasta el momento, cada individuo habrá recibido 1 caramelo, y quedarán por distribuir a − b caramelos. El sentido común nos dice que primero veamos si entre esos a − b caramelos, hay suficientes como para dar al menos uno a cada uno de los b personajes (o sea, que veamos si a − b ≥ b). a) Si no es así, ya está lista la repartija: cada individuo se queda con 1 caramelo que le ha sido entregado en la primera vuelta. b) Si fuese a − b ≥ b, pues bien, demos un caramelo a cada uno. Entonces, hasta el momento, cada individuo habrá recibido 2 caramelos, y quedarán por distribuir a − 2b caramelos. El sentido común nos dice... 3. LA DIVISIÓN DE NÚMEROS NATURALES 23 Y así seguimos (¡recursivamente!) hasta que, después de haber entregado caramelos a cada uno en sucesivas rondas, la cantidad remanente no alcance para dar un caramelo más a cada uno. El cociente de la división entre a y b es la cantidad de caramelos que ha sido posible entregar a cada individuo, y el resto de la división entre a y b es esa cantidad remanente que ya no alcanza para dar una ronda más de caramelos a los participantes. Obviamente, multiplicando el cociente por el divisor y sumando el resto obtenemos el dividendo. Dicho de otro modo, en términos de palos, empaquetamos de a b elementos los palos en la fila de palos que corresponde a a (dejando sueltos a los palos que ya no alcancen para formar un nuevo grupo de b elementos). La cantidad de paquetes completos que hayamos podido hacer corresponde al cociente, y la cantidad de palos sueltos no empaquetados corresponde al resto de la división entre a y b. El sentido común nos dice que vamos a poder dividir cualquier a ∈ N por cualquier b ∈ N − {0}, obteniendo un cociente y un resto, y que esos números obtenidos serán únicos independientemente de si a la repartija la hago yo hoy, o yo mañana, o mi tío pasado mañana. Es decir, hay una noción intuitiva de existencia y de unicidad del cociente y resto de una división entre números naturales. Formalicemos todas estas nociones intuitivas. Teorema 2.6. (Teorema de la división de números naturales) Sean a y b dos números naturales, con b 6= 0. Existe un único par de números naturales c y r con r < b tales que a = cb + r. Demostración. Consideremos el conjunto M = {x ∈ N : ∃k ∈ N : a = kb + x}. Se trata de un conjunto no vacío (pues tomando k = 0 vemos que al menos a ∈ M ). Por lo tanto, de acuerdo al PBO, M posee un mínimo elemento, llamémosle r. Por pertenecer a M , ese r es un natural que admite la existencia de c ∈ N tal que a = cb + r. Si fuese r ≥ b, tendríamos que a = (c + 1)b + (r − b) con c + 1 y r − b naturales, lo que mostraría que r − b estaría también en M , y eso nos llevaría a una contradicción (pues r − b < r por ser b ≥ 1, pero a la vez r − b ≥ r por ser r mínimo en M ) que provendría de suponer r ≥ b. Por lo tanto, r debe ser un natural menor que b. Hasta el momento, hemos probado la existencia de una pareja de números naturales c y r tales que a = cb+r con r < b. Para terminar de demostrar el teorema, falta ver la unicidad. Sean c′ y r′ dos números naturales tales que a = c′ b + r′ con r′ < b. Dado que r ≥ 0 y r′ < b, tenemos que cb ≤ cb + r y c′ b + r′ < c′ b + b = (c′ + 1)b. Es decir, cb ≤ cb + r = a = c′ b + r′ < (c′ + 1)b de donde c < c′ + 1, o, equivalentemente, c ≤ c′ . Análogamente, como r′ ≥ 0 y r < b, tenemos que c′ b ≤ c′ b + r′ y cb + r < cb + b = (c + 1)b. Es decir, c′ b ≤ c′ b + r′ = a = cb + r < (c + 1)b de donde c′ < c + 1, o, equivalentemente, c′ ≤ c. Juntando las dos desigualdades obtenidas, resulta que c′ = c, y, puesto que cb + r = c′ b + r′ , también se tiene que r′ = r . Luego, el par de naturales c y r es el único que satisface las condiciones del enunciado del teorema. Definición 2.7. Sean a y b números naturales, con b 6= 0. Los únicos números naturales c y r tales que a = cb + r con r < b se denominan, respectivamente, cociente y resto de la división entre a y b, denotados c (a, b) y r (a, b). A título ilustrativo, mostremos cómo aplicar el PCMC a la demostración de la existencia del par de naturales c y r del teorema anterior: Sean a ∈ N y b ∈ N − {0} tales que el par (a, b) es un contraejemplo a lo dicho en el teorema respecto de la existencia del par (c, r). ¿Puede ser a < b? No, porque bastaría tomar c = 0 y r = a para satisfacer el enunciado. Entonces es a ≥ b. Pero, en ese caso, es a − b ∈ N. Entonces, el par (a − b, b) es también un contraejemplo a la existencia de cociente y resto, pues si existiesen naturales c′ y r′ tales que a − b = c′ b + r′ con r′ < b, tendríamos a = (c′ + 1) b + r′ , es decir, bastaría tomar c = c′ + 1, que pertenecería a N, y r = r′ < b para ver que el par (a, b) no es contraejemplo (contradiciendo que sí lo es). En resumen, si (a, b) es un contraejemplo al enunciado de existencia, el par (a − b, b) también es contraejemplo (y más chico en primera componente, pues, siendo b > 0, es a − b estrictamente menor que a). Si hemos interpretado correctamente el teorema de la división, debemos ser capaces de ver que, ya que 15 = 2 · 7 + 1, la división entre 15 y 7 produce cociente 2 y resto 1, y la división entre 15 y 2 produce cociente 7 y resto 1. De observar que 19 = 3 · 5 + 4, podemos concluir sólo que la división entre 19 y 5 produce cociente 3 y resto 4, pero no podemos decir que la división entre 19 y 3 produce cociente 5 y resto 4, pues 4 es mayor que 3 (es más, podemos estar seguros de que ni el cociente es 5 ni el resto es 4). En general, si vemos una igualdad del tipo p = mq + n con p, q, m, n naturales, q 6= 0 y n < q, podemos estar seguros de que el cociente entre p y q es m, y el resto es n. Tal igualdad se denomina ecuación de la división entre p y q. El enunciado del teorema de la división no da explícitamente la manera de calcular c y r, pero la demostración, indirectamente, sí: búsquese el mayor c tal que cb ≤ a, y hágase r = a − bc. Es lo que nuestro algoritmo 24 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD de reparto equitativo de caramelos hacía. ¿Algoritmo, dijimos? Claro, y entonces escribamos en notación algorítmica el algoritmo para calcular el cociente entre a y b (y qué mejor que llamarlo c (a, b)): c(a, b) = si (a < b) contestar 0 sino contestar 1 + c(a − b, b) Era de esperar que hubiera una invocación recursiva, en el caso en que a ≥ b: habiendo repartido ya un caramelo a cada uno en la primera vuelta, y quedando a − b caramelos a repartir entre b, lo que cada individuo se lleve en el bolsillo será lo que le toque de esta última repartija (c (a − b, b)), más el caramelo que recibió en primera vuelta. Observar que, restando de b en b , lo que estamos haciendo es buscar el mayor c tal que cb que no supera a a. ¿Y el resto? Sale del siguiente algoritmo, r (a, b): r(a, b) = si (a < b) contestar a sino contestar r(a − b, b) Hicimos uso aquí de la siguiente propiedad: si a ≥ b, el resto de la división entre a y b es el mismo que el de la división entre a − b y b: sean c y r los naturales tales que a − b = cb + r con r < b, cuya existencia está garantizada por el teorema. Entonces, a = (c + 1) b + r con c + 1 ∈ N y r < b. Entonces, por unicidad, el cociente entre a y b es una unidad mayor que el cociente entre a − b y b (otra manera de ver que el algoritmo c (a, b) anda bien), y el resto de la división entre a y b es el mismo que el resto de dividir a − b por b (confirmando que nuestro algoritmo r (a, b) también anda bien). Podemos juntar los dos algoritmos en uno solo, cr (a, b), que conteste al mismo tiempo cociente y resto de a dividido b: cr(a, b) = si (a < b) contestar (0, a) sino contestar (1, 0) + cr(a − b, b) (con la convención de que sumar pares ordenados se hace sumando componente a componente, y que la primera componente de un par es un cociente, y la segunda un resto). ¿Cómo calculamos cr (19, 5)? Arrancamos haciendo a = 19 y b = 5. cr (19, 5) = (1, 0) + cr (14, 5) cr (14, 5) = (1, 0) + cr (9, 5) cr (9, 5) = (1, 0) + cr (4, 5) cr (4, 5) = (0, 4) (pues, en esta instancia, a = 4 < 5 = b, y no hace falta invocación recursiva). Entonces, cr (9, 5) = (1, 0) + (0, 4) = (1, 4). Entonces, cr (14, 5) = (1, 0) + (1, 4) = (2, 4). Entonces, cr (19, 5) = (1, 0) + (2, 4) = (3, 4). Pruebe con calcular cociente y resto de 123.456.789 dividido 13 mediante invocación al algoritmo cr. ¡Claro que va a tardar larguísimo tiempo! Harán falta más de nueve millones de invocaciones, pues la diferencia entre el primer argumento y el segundo es enorme. Resulta que nos encontramos con una cuestión crucial en Ciencias de la Computación: tenemos un algoritmo para hacer algo, pero, ¿es el mejor?, ¿el más rápido?, ¿el más fácil de ejecutar? Puede ocurrir que una misma tarea pueda ser ejecutada de muy diferentes modos, y algunos sean más eficientes que otros, en algún sentido. Sin dudas, una buena medida de la eficiencia de un algoritmo recursivo es la cantidad de invocaciones recursivas que se requieren en una determinada ejecución del mismo. Cuantas menos invocaciones, más eficiente. Invitamos a encontrar cociente y resto de 123.456.789 dividido 13 mediante invocación al siguiente algoritmo, cr10 (a, b), que aprovecha nuestra capacidad de multiplicar rápida y fácilmente por 10: cr10(a, b) = si (a < b) contestar (0, a) sino sea (c, r) = cr10(a, 10b) sea (c′ , r′ ) = cr(r, b) contestar (10c + c′ , r′ ) Ante todo, aclaramos que cr10 es otro algoritmo para la misma tarea de dividir: cr10 (a, b) = cr (a, b) cualesquiera sean a y b. Se puede observar que el algoritmo cr10 invoca al cr , pero, cuando es así, los argumentos con que lo hace son de magnitudes similares, y no requieren más de 10 invocaciones recursivas. Hacen falta no más de 90 invocaciones en total a cr10 y cr para calcular cociente y resto de 123.456.789 dividido 13. Mucho mejor que las nueve millones. Si bien aquí no lo hacemos, es fácil demostrar (por inducción en el número de invocaciones) que el nuevo algoritmo calcula bien cociente y resto de cualquier división entre naturales. Pasar de un algoritmo como cr a uno más eficiente como 3. LA DIVISIÓN DE NÚMEROS NATURALES 25 cr10 depende mucho del conocimiento que se tenga acerca de las propiedades de los números, pues la propia definición de división no aclara nada al respecto, y, con ella, lo más óptimo que se pudo hacer es el diseño de cr . 3.1. Divisibilidad en el campo de los naturales. Definición 2.8. Sean a y b dos naturales, con b 6= 0. Se dice que b divide a a si el resto de la división entre a y b es 0. Cuando b divide a a, también se dice que b es factor de a, o que b es un divisor de a, o que a es un múltiplo de b, o que a es divisible por b, y señalamos el hecho con la notación b | a. Del teorema de la división, deducimos que, para b 6= 0, b | a ⇐⇒ ∃c ∈ N : cb = a Recalquemos que para tener que b | a, hemos pedido b 6= 0 (por lo que, cuando escribamos b | a, daremos por sobreentendido que b 6= 0). Por lo tanto, 0 no divide a ningún natural. Además, cualquier natural no nulo divide a 0 (∀a ∈ N − {0} , 0 = 0 · a), 1 divide a cualquier natural (∀a ∈ N, a = a · 1), y cualquier natural a 6= 0 es divisible por sí mismo (∀a ∈ N − {0} , a = 1 · a). Supongamos que b | a y que a | d. Entonces, b | d, pues existen naturales c1 y c2 tales que a = c1 b y d = c2 a, de donde d = (c1 c2 ) a con c1 c2 ∈ N. La divisibilidad es una relación transitiva en el conjunto de los naturales (¿es un orden total? ¿estricto? ¿amplio?). Deduzcamos ahora otras propiedades de la divisibilidad. Proposición 2.9. Sean a y b naturales no nulos. Si b | a, entonces es b ≤ a. Demostración. Supongamos que b | a. Existe c ∈ N tal que a = bc. Como a 6= 0, es c 6= 0, y por lo tanto c ≥ 1, de donde, por uniformidad del producto en desigualdades, resulta a = bc ≥ b. De la simple pero importante propiedad recién demostrada, se deduce que todo natural no nulo tiene una cantidad finita de factores. Proposición 2.10. Sean a y b naturales no nulos tales que b | a y que a | b. Entonces es a = b. Demostración. Por la proposición 2.9, tenemos que b ≤ a y a ≤ b. Luego a = b. Proposición 2.11. Sean a1 , a2 y b naturales, y supongamos que b | a1 y que b | a2 (es decir, supongamos que b es un divisor en común que tienen a1 y a2 ). Entonces, b | xa1 + ya2 cualesquiera sean los naturales x e y. Es decir, b divide a cualquier combinación lineal a coeficientes naturales de a1 y de a2 . Demostración. Sean x, y ∈ N. Por hipótesis, existen naturales c1 y c2 tales que a1 = c1 b y a2 = c2 b, por lo que xa1 = xc1 b e ya2 = yc2 b, así que xa1 + ya2 = (xc1 + yc2 ) b siendo xc1 + yc2 ∈ N. Entonces, b | xa1 + ya2 . La propiedad anterior puede generalizarse del siguiente modo: Proposición 2.12. Supongamos que b | a1 , b | a2 , ..., b | ak . Entonces b divide a cualquier combinación lineal a coeficientes naturales de a1 , a2 , ..., ak . Proposición 2.13. Sean a1 , a2 y b naturales tales que b | a1 . Se tiene que b | a1 + a2 si, y sólo si, b | a2 . Demostración. Para demostrar la ida: como b | a1 , existe c1 ∈ N tal que a1 = c1 b. Supongamos que a1 + a2 = c2 b con c2 ∈ N. Entonces, a2 = c2 b − a1 = c2 b − c1 b = (c2 − c1 ) b, de donde se desprende que c2 − c1 ∈ N (pues b > 0) y, por lo tanto, b | a2 . Para la vuelta: Si b | a2 , como b | a1 , por aplicación de la proposición 2.11, se tiene que b | a1 + a2 . Generalizamos la proposición anterior: Proposición 2.14. Sean a1 , a2 , ..., ak , ak+1 y b naturales dados, y supongamos que b | a1 , b | a2 , ..., b | ak . Se tiene que b | a1 + a2 + · · · + ak + ak+1 si, y sólo si, b | ak+1 . La última propiedad permite demostrar varios de los criterios de divisibilidad aprendidos hace ya tiempo. Por ejemplo, para la divisibilidad por 8, sabemos que si un número tiene más de tres dígitos, alcanza con ver si el número formado por esos tres últimos dígitos es divisible por 8. Por ejemplo, según el criterio, 123.456.800 resulta divisible por 8, pues 800 lo es. ¿De dónde sale el criterio? Sea n un número natural cuyos dígitos, de derecha a izquierda, son a0 , a1 , ..., ak . Entonces, n = a0 + 10a1 + 100a2 + 1.000a3 + 10.000a4 + · · · + 10k ak . Notemos que 8 | 1.000, 8 | 10.000, y, en general, 8 | 10k si k > 2. Por la proposición 2.14, se sigue que 8 | n si, y sólo si, 8 divide a a0 + 10a1 + 100a2 , que es lo mismo que decir que 8 divide al número formado por los tres últimos dígitos del número original. Para la divisibilidad por 3, sea n = a0 + 10a1 + 100a2 + · · · + 10k ak . Entonces: n = a0 + (10 − 1) a1 + (100 − 1) a2 + · · · + 10k − 1 ak + a1 + a2 + · · · + ak = (a0 + a1 + a2 + · · · + ak ) + 9a1 + 99a2 + · · · + 10k − 1 ak 26 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD Dado que 3 | 9a1 , 3 | 99a2 , ..., 3 | 10k − 1 ak , por la proposición 2.14, 3 | n si, y sólo si, 3 | a0 + a1 + · · · + ak . Es decir, la suma de los dígitos de n debe ser un múltiplo de 3. Más adelante, en este curso, veremos otra manera de deducir criterios de divisibilidad. 4. La división de números enteros En el campo de los números naturales, dividir el natural a por el natural no nulo b comienza por buscar el múltiplo de b más grande que no supera a a. Tal múltiplo debe ser cb para c ∈ N. Entonces c es el cociente entre a y b. El resto se determina haciendo r = a − cb. Trasladaremos esta misma idea al campo de los números enteros, a fin de definir división en Z. Para eso, digamos que dado b ∈ Z, con b 6= 0, el conjunto de múltiplos de b es {kb : k ∈ Z}. Debe notarse que este conjunto no tiene cota superior ni inferior. Supongamos que deseamos dividir el entero a por el entero no nulo b. Para nosotros, eso va a significar buscar el mayor múltiplo de b que no supere a a, digamos que sea cb, para algún c ∈ Z. Hagamos r = a − cb. Entonces, c es el cociente y r el resto de la división entre a y b. Está claro que, en caso de ser a y b naturales, la división entera entre a y b coincide con la división natural entre ellos. Veamos los siguientes ejemplos: 1. a = 10 y b = −3. Los múltiplos de −3 que circundan a 10 son 9 y 12. El mayor múltiplo de b que no supera a a es 9 = (−3) (−3) = (−3) b. Por lo tanto, el cociente es c = −3. El resto es r = a − cb = 10 − (−3) (−3) = 1. 2. a = −10 y b = 3. Los múltiplos de 3 que andan cerca de −10 son −12 y −9. El mayor múltiplo de b que no supera a a es −12 = (−4) 3 = (−4) b. Por lo tanto, el cociente es c = −4. El resto es r = a − cb = −10 − (−4) 3 = 2. 3. a = −10 y b = −3. Los múltiplos de −3 más cercanos a −10 son −12 y −9. El mayor múltiplo de b que no supera a a es −12 = 4 (−3) = 4b. Por lo tanto, el cociente es c = 4. El resto es r = a − cb = −10 − 4 (−3) = 2. 4. a = 12 y b = −3. Los múltiplos de −3 en las cercanías de 12 son 9, 12, 15. El mayor múltiplo de b que no supera a a es 12 = (−4) (−3) = (−4) b. Por lo tanto, el cociente es c = −4. El resto es r = a − cb = 12 − (−4) (−3) = 0. 5. a = 0 y b = −3. Los múltiplos de −3 más cercanos a 0 son −3, 0, 3. El mayor múltiplo de b que no supera a a es 0 = 0 (−3) = 0b. Por lo tanto, el cociente es c = 0. El resto es r = a − cb = 0 − 0 (−3) = 0. Todo lo dicho anteriormente a nivel intuitivo sirve para comprender mejor el teorema de la división de enteros, que enunciamos a continuación, y cuya demostración es muy similar a la del teorema de la división de naturales. Teorema 2.15. (Teorema de la división de números enteros) Sean a y b dos números enteros, con b 6= 0. Existe un único par de números enteros c y r con 0 ≤ r < |b| tales que a = cb + r. Demostración. Consideremos el conjunto M = {x ∈ N : ∃k ∈ Z : x = a − kb :}, que se trata de un conjunto no vacío: tomando k = −|a||b|/b (que es entero pues |b|/b vale 1 o −1) se tiene que |a||b| b = a + |a||b| ≥ a + |a| ≥ 0 b Como M es un subconjunto no vacío de naturales, tiene mínimo elemento, llamémosle r. Entonces, es r = a − cb para algún c ∈ Z. Como r ∈ M , es r ≥ 0. Falta ver que r < |b|. 1. Si b > 0, es (c + 1) b > cb por lo que a − (c + 1) b < a − cb. Como a − cb es el mínimo elemento en M , debe ser a − (c + 1) b < 0, por lo que a − cb − b < 0, y entonces a − cb < b, que es lo mismo que decir r < |b|. 2. Si b < 0, es (c − 1) b > cb por lo que a − (c − 1) b < a − cb. Como a − cb es el mínimo elemento en M , debe ser a − (c − 1) b < 0, por lo que a − cb + b < 0, y entonces a − cb < −b, que es lo mismo que decir r < |b|. Como vemos, en cualquier caso es r < |b|. Hasta el momento, hemos probado la existencia de una pareja de números enteros c y r tales que a = cb + r con 0 ≤ r < |b|. Para terminar de demostrar el teorema, falta ver la unicidad. Sean c′ y r′ dos números enteros tales que a = c′ b + r′ con 0 ≤ r′ < |b|. Entonces cb + r = c′ b + r′ , por lo que b (c − c′ ) = r′ − r, de donde a − kb = a + (D2) |b| |c − c′ | = |r − r′ | Ya que 0 ≤ r < |b|, es − |b| < −r ≤ 0, y por lo tanto, como 0 ≤ r′ < |b|, resulta − |b| < r′ − r < |b|, y entonces |r′ − r| < |b|. De allí que, observando (D2), sea |b| |c − c′ | < |b|, vale decir, |b| |c − c′ | − |b| < 0, o equivalentemente |b| (|c − c′ | − 1) < 0. Pero |b| es natural. Luego, debe ser |c − c′ | − 1 < 0, o sea |c − c′ | < 1. Como el único natural menor que 1 es 0, debe ser |c − c′ | = 0, de donde c′ = c. Con esto, volviendo a observar (D2), tenemos que |r − r′ | = 0, y por lo tanto también es r′ = r. Luego, el par de enteros c y r es el único que satisface las condiciones del enunciado del teorema. 4. LA DIVISIÓN DE NÚMEROS ENTEROS 27 Definición 2.16. Sean a y b números enteros, con b 6= 0. Los únicos números enteros c y r tales que a = cb + r con 0 ≤ r < |b| se denominan, respectivamente, cociente y resto de la división entre a y b, denotados c (a, b) y r (a, b). Podemos calcular el cociente y resto de la división de los enteros a y b con el auxilio del algoritmo de la división de números naturales. Observemos que |a| y |b| son siempre números naturales, así que existen naturales c y r tales que |a| = c |b| + r con 0 ≤ r < |b|. El desafío es ahora ver cómo usar ese c y ese r para encontrar cociente y resto de la división entre a y b. 1. Supongamos que es a ≥ 0 y b < 0. Entonces, es a = c (−b) + r = (−c) b + r, con 0 ≤ r < |b|. Luego, el cociente entre los enteros a y b es el opuesto del cociente entre los naturales |a| y |b|, y el resto es el mismo. 2. Supongamos que es a < 0 y b > 0. Entonces, es −a = cb + r, con 0 ≤ r < |b|. Operando, tenemos que a = (−c) b − r. a) Si fuese r = 0, tenemos a = (−c) b, por lo que el cociente entre los enteros a y b sería −c, y el resto 0. b) Si fuese r > 0, es a = (−c) b − r + b − b = (−c − 1) b + (b − r). Como era 0 < r < b, tenemos que 0 ≤ b − r < b. Luego, el cociente entre los enteros a y b es −c − 1, y el resto es b − r. 3. Supongamos que es a < 0 y b < 0. Entonces, es −a = c (−b) + r, con 0 ≤ r < |b|. Operando, tenemos que a = cb − r. a) Si fuese r = 0, tenemos a = cb, por lo que el cociente entre los enteros a y b sería c, y el resto 0. b) Si fuese r > 0, es a = cb − r + b − b = (c + 1) b + (−b − r). Como era 0 < r < −b, tenemos que 0 ≤ −b − r < −b = |b|. Luego, el cociente entre los enteros a y b es c + 1, y el resto es −b − r. Lo que hemos visto nos dice cómo encontrar cociente y resto de una división entre enteros, sabiendo encontrar cociente y resto de una división entre naturales. Esto último era llevado a cabo por ejemplo por el algoritmo cr (a, b), donde a y b son naturales. Podemos entonces escribir un algoritmo crent (a, b), apto para recibir a y b enteros, y contestar el cociente y resto de a dividido por b. crent(a, b) = sea (c, r) = cr (|a|, |b|) si (a ≥ 0) si (b > 0) contestar (c, r) sino contestar (−c, r) sino si (b > 0) si (r = 0) contestar (−c, 0) sino contestar (−c − 1, b − r) sino si (r = 0) contestar (c, 0) sino contestar (c + 1, −b − r) Por supuesto que la invocación a cr (|a| , |b|) podría reemplazarse por una llamada a cr10 (|a| , |b|) y el algoritmo andaría igualmente bien, excepto que mucho más eficiente. 4.1. Algunas propiedades de la división. La más elemental de las propiedades nos dice, a grandes rasgos, que si dividimos por b el resto de una división por b, obtenemos el mismo número como resto. Proposición 2.17. Para todos a y b enteros con b 6= 0, es r r(a, b), b = r(a, b). Demostración. Se tiene que a = c(a, b) · b + r(a, b) con 0 ≤ r(a, b) < |b|. Luego,r(a, b) = 0 · b + r(a, b) en donde 0 ≤ r(a, b) < |b|. Luego, por el Teorema de la División, se tiene que r r(a, b), b = r(a, b). Supongamos que a, d y b son enteros con b 6= 0, y que conocemos cociente y resto de la división entre a y b, y también cociente y resto de la división entre d y b. ¿Será posible conocer, en base a ello, cociente y resto de a + d dividido b, y de ad dividido b, sin calcular a + d y ad? Tal vez, lo primero que se nos viene a la cabeza es decir que r (a + d, b) = r (a, b) + r (d, b), es decir, que el resto de la suma es igual a la suma de los restos. Pero un poco de reflexión nos advierte sobre el peligro que puede haber: individualmente, tanto r (a, b) como r (d, b) son menores que |b|, pero puede que su suma no lo sea, y entonces, en ese caso, esa suma no puede ser el resto de una división por b. Sin embargo, el teorema de la división nos da herramientas para averiguar r (a + d, b) sin necesidad de sumar a con d. Proposición 2.18. Sean a, d y b enteros con b 6= 0. Entonces, c(a + d, b) = r(a + d, b) = r(ad, b) = c(a, b) + c(d, b) + c r(a, b) + r(d, b), b r r(a, b) + r(d, b), b r r(a, b) · r(d, b), b 28 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD Demostración. Del teorema de la división, existen enteros c1 , c2 , r1 y r2 tales que a d = = c1 b + r1 c2 b + r2 0 ≤ r1 < |b| 0 ≤ r2 < |b| Además, existen enteros c3 y r3 tales que r1 + r2 = c3 b + r3 con 0 ≤ r3 < |b|. Por lo tanto, a+d = c1 b + r1 + c2 b + r2 = c1 b + c2 b + (r1 + r2 ) = = c1 b + c2 b + c3 b + r3 (c1 + c2 + c3 ) b + r3 Entonces, hemos expresado al número a + d como la suma entre un múltiplo de b y un entero no negativo menor que |b|. Entonces, por el teorema de la división, es c (a + d, b) = = y también c1 + c2 + c3 = c (a, b) + c (d, b) + c (r1 + r2 , b) c (a, b) + c (d, b) + c r(a, b) + r(d, b), b r (a + d, b) = r3 = r (r1 + r2 , b) = r r(a, b) + r(d, b), b Listo lo referente a la suma. Para la aseveración relativa al producto ad, notemos que existen enteros c4 y r4 tales que r1 r2 = c4 b + r4 con 0 ≤ r4 < |b|. Por lo tanto, ad = (c1 b + r1 ) (c2 b + r2 ) = (c1 c2 b + c1 r2 + r1 c2 ) b + r1 r2 = = (c1 c2 b + c1 r2 + r1 c2 ) b + c4 b + r4 (c1 c2 b + c1 r2 + r1 c2 + c4 ) b + r4 Entonces, hemos expresado al número ad como la suma entre un múltiplo de b y un entero no negativo menor que |b|. Entonces, por el teorema de la división, es r (ad, b) quedando así probada la proposición. = = r4 = r (r1 r2 , b) r r(a, b) · r(d, b), b 2 En particular, haciendo d = a en la proposición anterior, tenemos que r a2 , b = r (r (a, b)) , b . Podemos generalizar esto así: n Proposición 2.19. Sean a, b ∈ Z con b 6= 0, y n un entero positivo. Entonces, r (an , b) = r r(a, b) , b . Demostración. Haremos inducción sobre n ≥ 1. 1. El caso n = 1 es cierto, por la proposición 2.17. n n 2. Supongamos ahora que r (a , b) = r r(a, b) , b . Entonces, r an+1 , b = r (an a, b) = r r (an , b) · r(a, b), b n n = r r r(a, b) , b · r r(a, b), b , b = r r(a, b) · r(a, b), b n+1 ,b = r r(a, b) y por lo tanto, la proposición se cumple para n + 1. Esta última proposición es de gran ayuda, junto con la proposición 2.18, para encontrar restos de divisiones de una potencia por un dado número, sobre todo si la potencia es alta y produce errores de desborde en la calculadora con que contamos para hacer los cálculos. Ejemplo 2.20. Calcular el resto de la división entre 12121 y 13. Tenemos que r (12, 13) = 12 y que 60 12 = 14460 12. Aplicando las r 122 , 13 = r (144, 13) = 1 pues 144 = 11 · 13 + 1. Además, 12121 = 122 proposiciones 2.18 y 2.19, aprovechamos todo esto de la siguiente forma: r 12121 , 13 = r 14460 12, 13 = r r 14460 , 13 · r (12, 13) , 13 60 · 12, 13 = r 160 · 12, 13 = r (12, 13) = 12 = r r(144, 13) Entonces, el resto de la división entre 12121 y 13 es 12. 5. NÚMEROS PRIMOS Y COMPUESTOS 29 Ejemplo 2.21. Calcular el resto de la división entre 534.567 y 8. Como r(52 , 8) = 1 y 34.567 = 2·17.283+1, tenemos que 534.567 = 2517.283 · 5, de donde r 534.567 , 8 = r r(5, 8)r 2517.283 , 8 , 8 = r 5r r(25, 8)17.283 , 8 , 8 = r 5r 117.283 , 8 , 8 = r(5, 8) = 5 4.2. Divisibilidad en el campo de los enteros. Extenderemos ahora el concepto de divisibilidad visto para números naturales, al conjunto de los números enteros, con obvias modificaciones. Definición 2.22. Sean a y b dos enteros, con b 6= 0. Se dice que b divide a a si el resto de la división entre a y b es 0. Seguimos usando frases como “es factor de”, o “es divisor de”, o “es múltiplo de”, o “es divisible por”, y también usamos la notación b | a (sobreentendiendo que b 6= 0). Del teorema de la división de enteros, surge que, para b 6= 0, b | a ⇐⇒ ∃c ∈ Z : cb = a 0 no divide a ningún entero. Además, cualquier entero no nulo divide a 0 (∀a ∈ Z − {0} , 0 = 0 · a), 1 y −1 dividen a cualquier entero (∀a ∈ Z, a = a · 1 ∧ a = (−a) (−1)), y cualquier entero a 6= 0 es divisible por sí mismo y por su opuesto (∀a ∈ Z − {0} , a = 1 · a ∧ a = (−1) (−a)). Se sigue cumpliendo la transitividad de la relación “ser divisible por”. Una propiedad importante, pues nos permitirá ignorar los signos a la hora de verificar divisibilidad entre enteros, es la siguiente: Proposición 2.23. Sean a y b enteros, con b 6= 0. Se tiene que b | a si, y sólo si, |b| |a|. Demostración. Supongamos que b | a. Entonces existe c ∈ Z tal que a = cb, por lo que |a| = |c| |b| con |c| ∈ N. Luego, |b| |a|. Supongamos ahora que |b| | |a|. Existe c ∈ N tal que |a| = c |b|. Pero entonces es a = cb o a = (−c) b, y, en cualquier caso, se tiene que b | a. Veamos ahora otras propiedades de la divisibilidad, correlato de las correspondientes propiedades de la divisibilidad en naturales. Proposición 2.24. Sean a y b enteros no nulos. Si b | a, entonces es |b| ≤ |a|. Demostración. Como b | a, tenemos que |b| |a| (proposición 2.23) y entonces, por proposición 2.9, tenemos que |b| ≤ |a|. Entonces deducimos que todo entero no nulo tiene una cantidad finita de factores, la mitad de ellos es positiva y la otra mitad negativa. Proposición 2.25. Supongamos que a y b son enteros tales que b | a y que a | b. Entonces es a = b o a = −b. Demostración. Como b | a y a | b, tenemos que |b| ≤ |a| y que |a| ≤ |b|. Entonces |a| = |b|, de donde se sigue que es o bien a = b o bien a = −b. Proposición 2.26. Supongamos que b | a1 , b | a2 , ..., b | ak , donde b, a1 , ..., ak son enteros. Entonces b divide a cualquier combinación lineal a coeficientes enteros de a1 , a2 , ..., ak . Proposición 2.27. Sean a1 , a2 , ..., ak , ak+1 y b enteros, y supongamos que b | a1 , b | a2 , ..., b | ak . Se tiene que b | a1 + a2 + · · · + ak + ak+1 si, y sólo si, b | ak+1 . 5. Números primos y compuestos Sea a un número entero. Para él, podemos elaborar su conjunto de divisores, es decir, el conjunto {b ∈ Z : b | a}. Ese conjunto de divisores nunca es vacío: al menos 1, −1 están allí, y si además es a 6= 0, a y −a también están. Un factor de a que no es 1, ni −1, ni a ni −a, se llama divisor propio de a. Los números 1 y −1 (y a y −a, si a 6= 0) son los divisores impropios de a. Notar que el módulo de un divisor propio es al menos 2, y si a 6= 0, menor que |a| (proposición 2.24). Ejemplo 2.28. El conjunto de divisores de 4 está compuesto por −4, −2, −1, 1, 2 y 4. El número 4 posee, además de sus divisores impropios, los divisores propios 2 y −2. Ejemplo 2.29. El conjunto de divisores de 5 está compuesto por −5, −1, 1 y 5. Entonces, el 5 no posee divisores propios. 30 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD En base a la cantidad de elementos que tenga el conjunto de divisores de un número, éste puede ser clasificado en dos categorías. Definición 2.30. Se dice que un entero es un número primo si su conjunto de divisores consta exactamente de cuatro elementos. Un entero se llama compuesto si su módulo es mayor que 1 y no es un número primo. Veamos algunos ejemplos: 1. 0 no es un número primo pues posee infinitos divisores, y no exactamente cuatro. Tampoco es un número compuesto. 2. 1 no es un número primo pues su conjunto de divisores consta de sólo dos elementos, 1 y −1. Tampoco es un número compuesto. Lo mismo vale para −1. 3. 2 es primo, pues su conjunto de divisores es {−2, −1, 1, 2}, es decir, tiene exactamente cuatro miembros. Igualmente, −2 es primo. 4. 3 y −3 son primos, pues el conjunto de divisores es {−3, −1, 1, 3} y entonces consta de exactamente cuatro elementos. 5. 4 no es primo, pues su conjunto de divisores es {−4, −2, −1, 1, 2, 4}, que no consta de exactamente cuatro elementos, sino de seis. Entonces, 4 es un número compuesto, así como −4. De la definición, se desprende que, para a ∈ Z, a es primo ⇐⇒ (|a| > 1 ∧ a no tiene divisores propios) Ya que b | a si, y sólo si, b | −a, se deduce que el conjunto de divisores que tiene un número a es el mismo que el conjunto de divisores de −a. Por eso, un número a es primo si, y sólo si, −a es también primo. Ya que b | a si, y sólo si, −b | a, para detectar si un número entero a es primo, alcanza con ver su conjunto de divisores positivos: a es primo si, y sólo si, tiene exactamente dos divisores positivos. 5.1. Pruebas de primalidad. Desde hace mucho tiempo, los números primos han concentrado el interés de los matemáticos. Hay muchas cuestiones relativas a ellos que los hacen particularmente atractivos. Primero, dado un número cualquiera, como por ejemplo 123.456.787, ¿cómo decidir si es primo? Segundo, ¿cuál es el primo más grande? ¿O será que la cantidad de primos es infinita, y por tanto no hay uno que sea mayor que todos los otros? Tercero, ¿hay primos de la forma 2n − 1 para n natural? En caso de haberlos, ¿son infinitos? Para la primera pregunta, se han ideado tests de primalidad, es decir, algoritmos para decidir si un dado número es primo o no. Ya veremos algunos básicos. El segundo grupo de preguntas ha sido ya contestado, alrededor del año 300 a.C., por el griego Euclides, y más adelante veremos cómo procedió para contestar. La última pregunta del tercer grupo es sólo un ejemplo de los abundantes problemas abiertos que al día de la fecha se encuentran sin resolver en relación a los números primos. Hay efectivamente primos de la forma 2n −1 (probar con n = 5) pero aún no se sabe si hay infinitos primos de tal forma. Y así como ésta, hay muchísimas cuestiones sin resolver. ¿Por qué interesa saber si un número dado es o no primo? Más adelante veremos que los números primos son básicos en cierto sentido, es decir, son como los ladrillos que constituyen el muro de la teoría de números. Entonces los números primos tienen un gran interés teórico. Pero también práctico: los métodos actuales de seguridad para proteger sistemas suelen basar esa seguridad en el conocimiento de números primos muy pero muy grandes (de alrededor de 200 o 300 dígitos, o más). ¿Cómo saber si un número entero a es primo? Sabemos que a es primo si, y sólo si, |a| es primo, así que podemos idear un procedimiento para testear si un natural n es primo. Por la definición, y por el hecho de que un número natural no tiene divisores mayores que él, hay que testear si n posee un divisor entre 2 y n − 1. Es decir, probar si 2 | n, si 3 | n, ..., si n − 1 | n. Si alguna de esas divisibilidades se cumple, entonces n no es primo, y, en caso contrario, sí. Eso da un primer algoritmo, primo1 (a), que contesta V si el entero a es primo, y F si no. Como recursivamente hay que ir probando si un número dado tiene factores, el algoritmo incluye una función hija recursiva probarf actor1 (n, f ), que comprueba si f es factor de n. primo1(a) = si (|a| ≤ 1) contestar F sino contestar probarf actor1(|a|, 2) probarf actor1(n, f ) = si (f = n) contestar V sino si r(n, f ) = 0 contestar F sino contestar probarf actor1(n, f + 1) En definitiva, probarf actor1 recibe como argumento un natural n, y se dedica a probar uno por uno los números de 2 hasta n − 1, a ver si uno de ellos es un divisor de n. Si encuentra uno que sea divisor, finaliza la ejecución contestando que no. Obviamente, cuando a es un primo de módulo mayor que 2, el número de invocaciones a probarf actor1 es |a| − 1. 5. NÚMEROS PRIMOS Y COMPUESTOS 31 Veamos cómo mejorar varios aspectos del algoritmo. 1. Supongamos que estamos viendo si 25 es primo. Lo primero a hacer es ver si 2 es un factor de 25. No lo es, y entonces continuamos, viendo si 3 es factor de 25. No lo es, y entonces continuamos, viendo si 4 es factor de 25. ¡Alto! ¿Hace falta ver si 4 divide a 25, ya sabiendo que 2 no es factor de 25? Obviamente que no, por la transitividad de la divisibilidad: como 2 | 4, si a su vez 4 dividiera a 25, tendríamos que 2 dividiría a 25. Pero ya sabemos que 2 no es un factor de 25, por lo que no puede ocurrir que 4 divida a 25. Es decir, habiendo probado que 2 no es factor de 25, ya sabemos que 4 tampoco, y, por un razonamiento análogo, ni 6, ni 8, ni ningún número par. Entonces, una primera mejora al algoritmo primo1 consiste en probar si a es divisible por 2, y si no lo es, dedicarse a ver, a partir del 3 y yendo de dos en dos, si encontramos un factor de |a|. Llamemos primo2 (a) al algoritmo que procede de esa manera, y cuya especificación es la siguiente: primo2(a) = si (|a| ≤ 1) contestar F sino si r(a, 2) = 0 si (|a| = 2) contestar V sino contestar F sino contestar probarf actor2(|a|, 3) probarf actor2(n, f ) = si (f = n) contestar V sino si r(n, f ) = 0 contestar F sino contestar probarf actor2(n, f + 2) Gracias a esta modificación, la cantidad de invocaciones recursivas será ahora del orden de |a|/2, es decir, con un simple cambio nos hemos ahorrado la mitad del trabajo. 2. Pero podemos ahorrar aún más trabajo. ¿Cuál es el divisor propio más grande que puede tener 1.891? Claro que no va a ser 1.890, porque 1.890 · 2 ya es mucho mayor que 1.891, y peor si lo multiplicamos por 3, o 4, etc. En realidad, estamos viendo que el mayor divisor propio que puede tener un natural n ≥ 2 no puede ser más grande que la mitad de n (o la mitad de n − 1, si n es impar). Esto nos ahorraría la mitad de la mitad del trabajo: después de haber probado si |a| es par, buscar factores propios de |a| arrancando de 3 y yendo de dos en dos, hasta llegar a la mitad de |a|. Si hasta allí no hemos encontrado factores propios, a debe ser primo. Sin embargo, ahora veremos que no es necesario ni siquiera llegar a probar hasta la mitad de |a| para comprobar si a es primo. Existe una mejor cota para la decisión. Resulta que, para decidir √ si un natural n es primo, alcanza con buscar factores propios hasta la parte entera del número real n, es decir, el mayor número natural q tal que q 2 ≤ n. Por ejemplo, en el caso de n = 1.891, tenemos que 432 = 1.849 ≤ 1.891, mientras que 442 = 1.936 > 1.891, y por lo tanto, para testear la primalidad de 1.891, alcanza con buscarle factor hasta el número 43. ¿Por qué esto funciona bien? Proposición 2.31. Sea n un número natural mayor que 1, y sea q el mayor natural tal que q 2 ≤ n. Si n no tiene factores propios menores o iguales que q, entonces n es un número primo. Demostración. Demostraremos la contrarrecíproca: si n no es primo, entonces tiene al menos un factor propio menor o igual que q. Si n no es primo, siendo mayor que 1, tiene un factor propio b, es decir, existe c ∈ Z+ tal que n = bc. 1. Si b ≤ q, ya está demostrada la implicación. 2. Si b > q, es b ≥ q + 1, por lo que bc ≥ (q + 1) c, es decir, n ≥ (q + 1) c. Si fuese c ≥ q + 1, tendríamos 2 n ≥ (q + 1) , contradiciendo que q es el máximo natural cuyo cuadrado no supera a n. Entonces, es c < q + 1, o, equivalentemente, c ≤ q. Dado que c también es un factor propio de n, queda demostrada la proposición. Entonces, gracias√a esta proposición, podemos poner como cota superior de búsqueda de factores propios a la parte entera de n (o, equivalentemente, preguntar directamente si el factor que estamos testeando tiene 32 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD cuadrado que supera a n). El siguiente algoritmo, primo (a), trabaja de esa manera. primo(a) = si (|a| ≤ 1) contestar F sino si r(a, 2) = 0 si (|a| = 2) contestar V sino contestar F sino contestar probarf actor(|a|, 3) probarf actor(n, f ) = si (f 2 > n) contestar V sino si r(n, f ) = 0 contestar F sino contestar probarf actor(n, f + 2) Hace un rato, dijimos que si ya habíamos visto que 2 no es un factor de un natural n, no tiene sentido preguntarse si los múltiplos de 2 son factores de n. Ese razonamiento puede aplicarse también a cualquier otro primo menor que el número n cuya primalidad estamos testeando. Si p es un primo menor que n y no es un factor de n, entonces ningún múltiplo de p puede ser factor de n. Por esta razón, cuando estamos decidiendo si un natural n es primo, sólo hace falta ver si es divisible por algún primo menor √ que él. Pero de la segunda consideración se desprende que alcanza con sólo verificar hasta la parte entera de n. De todo eso, se puede establecer el siguiente criterio para decidir si un número natural n es primo: √ Elaborar una lista con todos los números primos que no superen a la parte entera de n. n es primo si, y sólo si, ningún número de esa lista es factor de n. Por ejemplo, los primos menores o iguales que 100 son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 Esa lista alcanza para decidir si un natural n ≤ 10.000 es o no primo. Por ejemplo, 8.633 no es primo, pues es divisible por 89. El número 9.973 es primo pues no es divisible por√ningún elemento de esa lista. La lista no alcanza para saber si 100.001 es o no primo, pues la parte entera de 100.001 es 316, y entonces, para saber si 100.001 es primo, hace falta la lista de todos los primos que no superan a 316. Si queremos saber si un número de 30 cifras es primo, por este criterio hace falta conocer los primos que tengan hasta 15 dígitos. 5.2. La criba de Eratóstenes. Acabamos de ver que, para ciertos objetivos, es muy útil tener una lista con todos los naturales primos hasta un cierto límite superior N . Por ejemplo, eso sirve para testear eficientemente la primalidad de cualquier número menor que N 2 . ¿Cómo se puede elaborar sistemáticamente tal lista? Una manera es invocar al algoritmo primo (a) muchas veces, con todos los números naturales hasta N , a ver cuáles son primos. Eso va a tardar mucho tiempo. Resulta que en el siglo III a.C., a un griego de nombre Eratóstenes se le ocurrió una muy buena idea: en vez de ver cuáles números menores o iguales que N son primos, averiguar cuáles son compuestos. De entrada, parece ser lo mismo que averiguar cuáles son primos, pero resulta que no, y la explicación está en el procedimiento que se emplea para detectar a los números compuestos. El procedimiento es así: 1. Escribir los números del 2 al N en forma consecutiva (ésta es nuestra lista inicial) 2. A partir de 2, vamos tachando todos los números de dos en dos (hasta llegar al final de la lista), pero sin tachar al propio 2. 3. El primer número que quedó sin tachar después de 2 es 3. Entonces, a partir de 3, vamos tachando todos los números de la lista inicial de tres en tres, pero sin tachar al propio 3 (si un número ya había sido tachado en el paso anterior, lo dejamos tachado como estaba). 4. El primer número que quedó sin tachar después de 3 es 5 (al 4 ya lo habíamos tachado cuando fuimos de dos en dos desde el 2). Entonces, a partir de 5, vamos tachando todos los números de la lista inicial de cinco en cinco, pero sin tachar al propio 5 (y dejando tachados a los números que ya estaban tachados en el paso anterior). 5. El primer número que quedó sin marcar después de 5 es 7 (al 6 ya lo habíamos tachado cuando fuimos de dos en dos desde el 2, y lo “volvimos a tachar” cuando fuimos de tres en tres desde el 3). Entonces, a partir de 7, vamos tachando todos los números de la lista inicial de siete en siete, pero sin tachar al propio 7. 6. El primer número que quedó sin tachar después de 7 es 11 (al 8 y al 10 ya los habíamos tachado cuando fuimos de dos en dos desde el 2, y al 9 lo hemos tachado cuando fuimos de tres en tres desde el 3). Entonces, comenzando en 11, vamos tachando todos los números de la lista inicial de once en once, pero sin tachar al propio 11. 5. NÚMEROS PRIMOS Y COMPUESTOS 33 Y así continuamos, viendo cuál es el primer número sin tachar a la derecha del cual empezamos en el paso anterior, y vamos de a saltos tachando números de la lista inicial. Repetimos este procedimiento hasta√que lleguemos a que el primo a partir del cual tenemos que comenzar el proceso supera a la parte entera de N . Los números de la lista inicial que han quedado sin tachar son los primos menores o iguales que N . ¿Qué es lo que estamos haciendo con este procedimiento? El primer paso consiste en escribir la lista completa de números del 2 al N . En el paso siguiente, estamos averiguando todos los números compuestos de esa lista que tienen a 2 como factor. En el siguiente, todos los compuestos de la lista que tienen a 3 como√factor. En el siguiente, todos los compuestos que tienen a 5 como factor. Y así, hasta llegar a parte entera de N . Una criba es un colador (claro que nos resultaría raro que má nos diga “ayudame a cribar los fideos que acaban de hervir en la olla”, pero no nos asustaríamos si nos pide “ayudame a colar los fideos”). En el procedimiento anterior, lo que estamos haciendo es cribar los números de 2 a N , repetidas veces, a fin de eliminar los compuestos y retener sólo los primos. Al tachar los compuestos múltiplos de 2, estamos “cribando los múltiplos de 2”, reteniendo sólo a 2, y a todos los otros números que no son múltiplos de 2; de ellos, al tachar los compuestos múltiplos de 3, estamos “cribando los múltiplos de 3”, reteniendo sólo a 2, a 3, y a los que no son múltiplos de 2 ni de 3. Y así, sucesivamente, por detección y tachado de los números compuestos de la lista, nos quedamos sólo con los primos. Ejemplo 2.32. Apliquemos el método de la criba de Eratóstenes para encontrar los primos menores o iguales que N = 49. Mostramos paso a paso el procedimiento: 1. Lista inicial: 2 3 4 5 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 45 46 47 48 49 2. Primer cribado (tachar los compuestos que son múltiplos de 2, salvo el propio 2): 11 13 15 17 19 25 2 3 4 5 6 7 8 9 10 12 14 16 18 2 0 21 2 2 23 24 26 27 28 29 3 0 31 3 2 33 34 35 36 37 38 39 40 41 42 43 4 4 45 4 6 47 48 49 3. Segundo cribado (tachar los compuestos que son múltiplos de 3, salvo el propio 3): 2 3 4 5 6 7 8 9 26 27 28 29 3 0 31 3 2 3 3 13 11 14 12 10 34 35 36 37 38 15 39 19 17 2 0 18 16 40 41 42 43 4 4 2 1 4 5 25 24 2 2 23 49 4 6 47 48 4. Tercer cribado (tachar los compuestos que son múltiplos de 5, salvo el propio 5): 11 13 17 19 2 3 5 6 7 8 9 10 12 14 15 16 18 2 0 2 1 2 2 23 24 25 4 29 37 41 43 49 26 27 28 3 0 31 3 2 3 3 34 35 36 38 39 40 42 4 4 4 5 4 6 47 48 5. Cuarto cribado (tachar los compuestos que son múltiplos de 7, salvo el propio 7): 11 13 17 19 2 3 5 6 7 8 9 10 12 14 15 16 18 2 0 2 1 2 2 23 24 25 4 43 41 37 29 49 48 4 6 47 4 5 4 4 42 40 39 38 36 35 34 3 3 3 2 3 0 31 28 27 26 Y ya no hace falta cribar más, porque el próximo número a partir del cual habría que empezar el proceso √ es 11, que ya es mayor que la parte entera de 49 que es 7. Los números que no tienen marca abajo son los primos de la lista: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43 y 47. 5.3. Infinitud de los números primos. Ahora vamos a demostrar una importante propiedad legada por Euclides hace ya mucho tiempo: existen infinitos números primos en el conjunto de los enteros. Lema 2.33. Todo número natural compuesto es divisible por un natural primo. Demostración. Demostraremos la propiedad por el PCMC. Sea n un contraejemplo, es decir, sea n un natural compuesto que no sea divisible por ningún número primo. Por ser compuesto, n debe tener un factor propio b tal que 1 < b < n. Por nuestra suposición, b no puede ser un número primo, por lo que b es compuesto. ¿Puede ser b divisible por algún número primo? No, pues, de serlo, ese primo dividiría también a n (transitividad de la divisibilidad), lo que contradiría que n no es divisible por un número primo. Entonces, b es un natural compuesto que tampoco es divisible por un número primo. O sea que b es también un contraejemplo al enunciado, y menor que el contraejemplo n. Entonces, por el PCMC, el lema queda demostrado. Teorema 2.34. (Euclides) Existen infinitos números enteros que son primos. Demostración. Dado que N ⊂ Z, alcanza con ver que existen infinitos naturales primos. Sea P el conjunto de todos los naturales primos. Si P fuese finito, tendría un elemento máximo a. Hagamos n = a! + 1, resultando que n es estrictamente mayor que 1 y que a, y entonces n ∈ / P, es decir, n es un natural compuesto. Luego, n es divisible por un natural primo p ∈ P (lema 2.33). Pero el resto de dividir n entre p es 1, pues 1 < p ≤ a y n = a(a − 1) · · · (p + 1)p(p − 1) · · · 2 · 1 + 1 (expresión que corresponde a la ecuación de la división entre n y p). 34 2. EL CONJUNTO DE LOS NÚMEROS ENTEROS. DIVISIBILIDAD Contradicción que proviene de suponer la existencia de una cantidad finita de números primos. Por lo tanto, existen infinitos primos. 6. Algunas curiosidades 6.1. Números de Fibonacci. De todas las funciones recursivas, tal vez la más clásica sea la que permite definir los números de Fibonacci. Los mismos surgieron en base a un problema teórico propuesto por Leonardo de Pisa (Fibonacci) en el siglo XIII, relacionado a la reproducción de conejos en una granja. La sucesión de Fibonacci comienza así: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, . . . Los puntos suspensivos indican que la lista es infinita. Cada término de la sucesión (salvo los dos primeros) se obtiene de sumar los dos que están inmediatamente a su izquierda. Los dos primeros, que constituyen la base para armar la sucesión completa, son 0 y 1. Formalmente, si designamos por fn al n-ésimo término de la sucesión, es f0 = 0, f1 = 1 y, para n ≥ 2, es fn = fn−1 + fn−2 . Surgieron varios problemas interesantes en relación a esta sucesión: 1. ¿Tienen algún factor propio en común dos términos consecutivos de la sucesión? Por inducción se demuestra que no. n 2. ¿Cómo crecen los términos de la sucesión? También por inducción, se puede ver que fn ≤ 74 , es decir, que la sucesión está acotada superiormente por una función exponencial creciente. 3. ¿Hay alguna fórmula para conocer fn directamente en función de n, sin necesidad de calcular los dos términos anteriores? Sí. La expresión fn = fn−1 + fn−2 es un ejemplo de ecuación de diferencias finitas, o ecuación de recurrencia, y hay una teoría general de resolución de tales ecuaciones. Aplicada al caso, se llega a deducir que √ !n √ !n 1+ 5 1− 5 1 1 −√ fn = √ 2 2 5 5 Está fórmula puede verificarse por inducción. Para n grande, predomina el primer término, así que se ve que el n-ésimo número de es casi proporcional a una función exponencial a tasa igual √ Fibonacci a la razón de oro (que es 1 + 5 /2, número importante histórica y arquitectónicamente). 6.2. Algunas conjeturas sobre números primos. 1. Conjetura de Goldbach: ¿Es cualquier número par igual a la suma de dos números primos? Por análisis de casos individuales, eso pareciera ocurrir siempre. Por ejemplo: 16 = 5 + 11, 22 = 11 + 11. Y se han hecho muchas pruebas, desde el siglo XVII en que fue planteada la conjetura. Al día de la fecha, sigue siendo un interrogante. 2. Primos gemelos: Dos números primos se llaman gemelos si difieren en dos unidades. Por ejemplo, 71 y 73 son primos gemelos. La conjetura es: ¿Existen infinitos pares de primos gemelos? Hasta el momento, los primos gemelos más grandes que se han descubierto son 33.218.925 · 2169.690 − 1 y 33.218.925 · 2169.690 + 1. Ocurrió en el año 2002, y cada número tiene 51.090 dígitos. 3. Primos de Mersenne: En el siglo XVII, el monje francés Marin Mersenne estudió números de la forma 2n − 1, interesándose en los valores de n para los cuales la expresión produce números primos. Los primos de la forma 2n − 1 se llaman primos de Mersenne. El monje ofreció varios de esos n, de los cuales se equivocó en algunos (por ejemplo, afirmó que 2257 − 1 es primo; recién en el siglo XX, gracias a las calculadoras, se pudo verificar que no). La principal conjetura que formuló es que hay infinitos primos de esa forma. Hasta este momento, saber si hay infinitos primos de Mersenne es un problema abierto. El mayor de los primos de Mersenne descubiertos hasta ahora es 224.036.583 − 1, con 7.235.733 dígitos, en mayo de 2004. 4. Se ha demostrado que entre un número positivo cualquiera y su doble siempre existe al menos un primo. Es decir, ∀n ≥ 1, ∃p : n ≤ p ≤ 2n ∧ p es primo. Pero se buscan más pistas sobre la distribución de los primos a lo largo de la recta numérica. Por ejemplo, está abierta la cuestión de si entre dos cuadrados 2 perfectos consecutivos hay un primo, es decir, si ∀n ≥ 1, ∃p : n2 ≤ p ≤ (n + 1) ∧ p es primo. Por lo 2 que antes se dijo, hay un primo entre n2 y 2n2 , pero (n + 1) < 2n2 , de modo que la existencia de un primo entre dos cuadrados consecutivos no puede resolverse sabiendo que siempre hay un primo entre un número y su doble. 6.3. Números perfectos. Un número perfecto es un natural que es igual a la suma de sus divisores positivos menores que él mismo. Por ejemplo, 6 = 3 + 2 + 1, mostrando que 6 es perfecto, y el menor de todos. Le siguen 28, 496 y 8.128. Euclides descubrió que esos cuatro números salen de aplicar la fórmula 2n−1 (2n − 1) con, respectivamente, n = 2, 3, 5, 7. A no equivocarse: no es cierto que si n es primo, la fórmula produzca siempre números perfectos (por ejemplo, probar n = 11). Al darse cuenta de que, en esos casos, también 2n − 1 es un 6. ALGUNAS CURIOSIDADES 35 primo, Euclides conjeturó y demostró que si 2n − 1 es primo, entonces 2n−1 (2n − 1) es un número perfecto. Posteriormente, Euler demostró en el siglo XVIII que todos los números perfectos pares se generan a partir de la fórmula que descubrió Euclides. No se conoce la existencia de números perfectos impares, pero, hasta el día de hoy, no está demostrada su inexistencia. Sin embargo, existen algunos resultados parciales. Si existe un número perfecto impar, debe ser mayor que 10300 , y debe tener al menos ocho factores primos distintos (y al menos once si no es divisible por 3). Uno de esos factores debe ser mayor que 107 , dos de ellos deben ser mayores que 10.000 y tres factores deben ser mayores que 100. Se desconoce si hay infinitos números perfectos, pues la pregunta está ligada a la existencia de infinitos primos de Mersenne. No es difícil demostrar que el último dígito decimal de un número perfecto par es siempre 6 u 8. 6.4. Números amigos. Dos números naturales m y n se llaman amigos si la suma de los divisores positivos de m (excepto m) es igual a n y viceversa. Pitágoras mostró la existencia de pares de números amigos, ofreciendo como ejemplo 220 y 284. La lista de divisores de 220 es {1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110, 220}; sumando todos ellos excepto 220, se obtiene 284. La lista de divisores de 284 es {1, 2, 4, 71, 142, 284}; sumando todos ellos excepto 284, se obtiene 220. Varios años después, en el siglo XVII, Fermat ofreció al mundo la segunda pareja de números amigos: 17.296 y 18.416. Fermat descubrió también una regla para encontrar tales pares: supongamos que p es un número tal que los números q = 3 · 2p−1 − 1, r = 3 · 2p − 1 y s = 9 · 22p−1 − 1 son todos primos; entonces, los números m = 2p qr y n = 2p s son amigos. Al día de la fecha, no se sabe si las parejas de números amigos son infinitas. Capítulo 3 MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO En el capítulo anterior, hemos formalizado el concepto de divisibilidad en el campo de los números enteros, entendiendo qué significa que un número sea un factor de otro. Hemos visto que, en la determinación de la primalidad de un número dado, interesa conocer su lista de factores. En este capítulo, consideraremos simultáneamente las listas de factores de dos números dados, interesándonos en el mayor de los elementos comunes a ambas listas: el máximo común divisor de esos dos números. Estudiaremos varias propiedades acerca de él, y veremos maneras eficientes para calcularlo. Luego, extenderemos la idea a la de máximo común divisor de varios números, y veremos una noción complementaria, la de mínimo común múltiplo, analizando la estrecha relación existente entre ambas. Finalmente presentaremos la aplicación de estas ideas a la búsqueda de soluciones enteras de cierto tipo de ecuaciones lineales, en cuya resolución el máximo común divisor juega un rol protagónico. 1. Máximo común divisor Definición 3.1. Sean a y b números enteros. Cualquier número entero que simultáneamente divide a a y a b se llama un divisor común de a y b. Es decir, d ∈ Z es un divisor común (o factor común) de a y de b si d | a y d | b. Una manera de encontrar factores comunes a a y a b es obtener la lista de divisores de ambos, y fijarse cuáles son los elementos que están en ambas listas. Si tanto a como b son 0, las dos listas son coincidentes e infinitas. Si al menos uno de los dos es diferente de 0, de la proposición 2.24, deducimos que ese número no nulo tiene sólo una cantidad finita de factores, y, en este caso, la lista de factores comunes a ambos es finita. Por razones que se harán evidentes más adelante, interesa mucho conocer cuál es el mayor de los elementos de esa lista finita. Definición 3.2. Sean a y b números enteros tales que al menos uno de ellos sea diferente de 0. El máximo común divisor de a y b, denotado mcd (a, b), es el mayor de los divisores comunes de a y b. Obsérvese que la lista de divisores comunes de dos números nunca es vacía: al menos el número 1 siempre está allí. Además, ya dijimos que la lista de divisores comunes es finita si al menos uno de los números es diferente de 0. Entonces, si a y b no son ambos nulos, el conjunto de sus divisores comunes es no vacío y finito. Por eso, debe tener un elemento máximo, y, por definición de máximo de un conjunto, es único. En otras palabras, el máximo común divisor de una pareja de números no simultáneamente nulos siempre existe y es único, y es un número entero positivo. Cuando dos números a y b tienen un factor propio t en común, se tiene que su máximo común divisor es mayor estricto que 1, pues, en ese caso, es mcd (a, b) ≥ |t| ≥ 2. Por lo tanto, si mcd (a, b) = 1 es porque ningún número más grande que 1 es factor común de a y b. Esta situación recibe un nombre especial. Definición 3.3. Sean a y b dos números enteros. Se dice que a y b son coprimos si no tienen factor común más grande que 1. Equivalentemente, a y b son coprimos cuando mcd (a, b) = 1. Proposición 3.4. Sea p un primo, y sea a un entero. Entonces o bien p es un factor de a o bien p y a son coprimos. Demostración. Supongamos que p no es factor de a. El único factor mayor que 1 que tiene p es |p|, que no es factor de a. Luego, la lista de factores comunes de p y a es {−1, 1}, y entonces mcd (p, a) = 1. ¿Cómo se calcula mcd (a, b)? De la definición, elaborando la lista de factores de a, luego la de b, obteniendo luego los factores comunes, y finalmente viendo cuál es el máximo de ellos. Nótese que, a la hora de encontrar el máximo común divisor por este método, nos alcanza con inspeccionar sólo los factores comunes positivos. Además, dado que la lista de factores comunes de a y b es la misma que la de factores comunes de |a| y |b| (proposición 2.23), se tiene que mcd (a, b) = mcd (|a| , |b|), y por esta razón es suficiente saber calcular máximo común divisor de pares de números naturales. Ejemplo 3.5. Encontrar mcd (84, 60). El conjunto de factores positivos de 84 es {1, 2, 3, 4, 6, 7, 12, 14, 21, 28, 42, 84}. El conjunto de factores positivos de 60 es {1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60}. La intersección de estos dos conjuntos es {1, 2, 3, 4, 6, 12}, cuyo máximo elemento es 12. Luego, mcd (84, 60) = 12. 37 38 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO Como pasa muchas veces, las definiciones no proporcionan el mejor método para calcular algo. Una primera mejora que podríamos hacer al método anterior para calcular mcd (a, b) es la siguiente: considerar sólo la lista de divisores positivos del más chico entre |a| y |b|, y, de mayor a menor, testear si son divisores del otro también, parando cuando encontremos uno (cosa que siempre va a ocurrir, en el peor de los casos cuando lleguemos a 1). En nuestro ejemplo anterior, esto funcionaría así: el más chico entre 84 y 60 es 60. Su lista de divisores positivos, ordenada de mayor a menor, es {60, 30, 20, 15, 12, 10, 6, 5, 4, 3, 2, 1}. ¿Es 60 factor de 84? No. Vamos con el siguiente de la lista: ¿Es 30 factor de 84? No. ¿Y 20? Tampoco. ¿Y 15? Tampoco. ¿Y 12? Sí. Entonces, mcd (84, 60) = 12. 1.1. El algoritmo de Euclides. La mejora obtenida más arriba para encontrar el máximo común divisor no es sustancial, y la razón es que seguimos dependiendo de buscar uno a uno factores de números. La búsqueda de todos los factores de un dado número es un proceso tedioso, y difícil de realizar si el número en cuestión es grande (de hecho, esa dificultad es lo que permite garantizar la seguridad de ciertos sistemas). ¡Caramba! ¿Podemos independizarnos del proceso de factorizar números para encontrar un máximo común divisor, siendo que buscamos precisamente un factor común, y el mayor de todos? La respuesta, por increíble que parezca, es sí, y la dio nuestro ya conocido Euclides hace una punta de años, ofreciendo un algoritmo muy eficiente. Para tratar de entender la idea del algoritmo, consideremos el problema de encontrar mcd (60, 24) elaborando la lista de divisores comunes a 60 y a 24. La lista de divisores positivos de 60 es {1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60}. La lista de divisores positivos de 24 es {1, 2, 3, 4, 6, 8, 12, 24}. La lista de los factores positivos comunes a ambos es {1, 2, 3, 4, 6, 12}. ¡Oh casualidad! Es la misma que la lista de factores positivos comunes a 84 y a 60 (ejemplo 3.5) Como ambas listas coinciden, sus elementos máximos son iguales. En otras palabras, mcd (84, 60) = mcd (60, 24). ¿Y qué tiene que ver la pareja (84, 60) con la pareja (60, 24)? 60 aparece en ambas, una vez como segundo argumento y otra como primero; y 24 es el resto de la división entre 84 y 60. De eso se dio cuenta Euclides: de que la lista de divisores comunes a los números a y b es la misma que la de los divisores comunes a b y r (a, b), siempre que b 6= 0. Demostrémoslo. Lema 3.6. Sean a, b y d enteros con b 6= 0. Se tiene que d es un factor común de a y de b si, y sólo si, d es un factor común de b y r (a, b). Demostración. De la ecuación de la división entre a y b, tenemos que r (a, b) = a − b · c (a, b), es decir, r (a, b) es combinación lineal a coeficientes enteros de a y de b. Si d | a y d | b, por proposición 2.26, tenemos entonces que d | r (a, b). Luego, d es factor común de b y de r(a, b). Para la vuelta, observemos que a = b · c (a, b) + r (a, b), por lo que a es combinación lineal a coeficientes enteros de b y r (a, b). Si d | b y d | r (a, b), nuevamente por proposición 2.26, tenemos que d | a. Luego, d es un factor común de a y b. Corolario 3.7. Sean a y b enteros con b 6= 0. Entonces, mcd (a, b) = mcd (b, r (a, b)). El anterior corolario se aprovecha para reducir el cálculo de mcd (a, b) al cálculo de mcd (b, r (a, b)), en donde los números intervinientes son típicamente más chicos que los originales a y b. Pero, a su vez, podemos usar el mismo corolario para decir que si r (a, b) 6= 0, entonces mcd (b, r (a, b)) = mcd (r (a, b) , r (b, r (a, b))). Y así sucesivamente. Por ejemplo, mcd (84, 60) = mcd (60, 24) = mcd (24, 12) = mcd (12, 0). Hemos llegado a un punto en que ya no podemos aplicar el corolario, pues el segundo argumento es 0. Sin embargo, no tenemos que trabajar mucho para darnos cuenta de que mcd (a, 0) = |a| cualquiera sea a 6= 0. Por lo tanto, mcd (12, 0) = 12, y entonces mcd (84, 60) = 12. En resumen, el recursivo algoritmo de Euclides para calcular mcd (a, b) es el siguiente: mcdeucl(a, b) = si (b = 0) contestar |a| sino contestar mcdeucl b, r(a, b) Vale decir, si b no es 0, dividir a entre b y aplicar el algoritmo al par (b, r (a, b)), repitiendo sucesivamente el procedimiento de dividir y fijarse en el resto, hasta llegar a una división con resto 0. Esto va a ocurrir finalmente en alguna etapa, pues la sucesión de restos que se va obteniendo de las sucesivas divisiones es estrictamente decreciente. Entonces, el máximo común divisor buscado es el último resto no nulo que se obtuvo. Ejemplo 3.8. Encontrar mcd (1.956, 328), por aplicación del algoritmo de Euclides. Observemos que r (1.956, 328) = 316 r (328, 316) r (316, 12) = = 12 4 r (12, 4) = 0 1. MÁXIMO COMÚN DIVISOR 39 Por lo tanto, mcdeucl (1.956, 328) = mcdeucl (328, r (1.956, 328)) = = mcdeucl (328, 316) = mcdeucl (316, r (328, 316)) mcdeucl (316, 12) = mcdeucl (12, r (316, 12)) = = = mcdeucl (12, 4) = mcdeucl (4, r (12, 4)) mcdeucl (4, 0) 4 Entonces, mcd (1.956, 328) = 4. Podríamos haber deducido ésto de sólo observar, en la sucesión de restos más arriba obtenida, cuál fue el último resto no nulo encontrado, que fue precisamente 4. Otro resultado interesante es el siguiente: Corolario 3.9. Sean a y b enteros no ambos nulos, y sea k un entero. Entonces, mcd (a + kb, b) = mcd (a, b). Demostración. Es directo ver que si b es 0, la propiedad se cumple. Ahora si b 6= 0, tenemos que b | kb, de donde, por proposición 2.18, es r (a + kb, b) = r (r (a, b) + r (kb, b) , b) = r (r (a, b) , b) = r (a, b). Por lo tanto, por corolario 3.7, es mcd (a + kb, b) = mcd (b, r (a + kb, b)) = mcd (b, r (a, b)) = mcd (a, b), como queríamos probar. 1.2. Algunas propiedades de M.C.D. Veremos ahora algunas cuestiones relacionadas al máximo común divisor, que permiten otras caracterizaciones del mismo. El primer resultado muestra que el máximo común divisor de dos números es siempre una combinación lineal a coeficientes enteros de esos dos números. Teorema 3.10. (Identidad de Bezout) Sean a y b dos números enteros no simultáneamente nulos. Existen enteros s y t tales que sa + tb = mcd (a, b). Demostración. Designemos g = mcd (a, b). Consideremos el conjunto C de todas las combinaciones lineales a coeficientes enteros de a y de b, es decir, C = {xa + yb : x, y ∈ Z}. Como a y b no son ambos nulos, eligiendo adecuadamente x e y se puede ver que hay al menos una combinación lineal positiva de a y b (por ejemplo, si a 6= 0, tomar y = 0 y x = |a| a , de modo que xa + yb = |a| > 0; similarmente, si fuese b 6= 0, podríamos tomar x = 0 e y = |b| ). Designemos por C + al conjunto de las combinaciones lineales positivas a coeficientes b + enteros de a y de b. Obviamente, C es un subconjunto de Z+ , y, por lo que acabamos de ver, es C + 6= ∅. Por el principio del buen orden de los naturales, C + tiene un mínimo elemento, llamémosle m, que es mayor que 0. Entonces existen enteros s y t tales que sa + tb = m. Mostremos que m = g, con lo que quedará probada la afirmación del teorema. Como g es un divisor común de a y b, g divide a cualquier combinación lineal de a y de b (proposición 2.26), en particular a m, por lo que g ≤ m (proposición 2.9). Para ver que m ≤ g, primero veamos que m | a. Por el teorema de la división, existen enteros c y r tales que a = cm + r con 0 ≤ r < m. Por lo tanto, r = a − cm = a − c (sa + tb) = a (1 − cs) + b (−ct). Entonces r es una combinación lineal no negativa a coeficientes enteros de a y de b. Si fuese r > 0, tendríamos que r ∈ C + , y entonces sería r ≥ m (pues m es el mínimo en C + ), contradiciendo que es r < m. Luego, debe ser r = 0, y entonces m | a. Análogamente se demuestra que m | b. Como m es un factor común de a y b, es m ≤ g. Y ya teníamos que g ≤ m, así que es m = g. Por el momento, dejamos al lector la inquietud de si el par de enteros (s, t) del teorema anterior es único. Volveremos más adelante sobre eso. De la demostración del teorema 3.10, surge la siguiente caracterización del mcd (a, b): Corolario 3.11. Sean a y b enteros no simultáneamente nulos. El mcd (a, b) es la menor de las combinaciones lineales positivas a coeficientes enteros de a y b. Es decir, mcd (a, b) = mı́n {xa + yb : x, y ∈ Z ∧ xa + yb > 0} De lo anterior, se desprende un hecho de mucha utilidad. Observación 3.12. Si un número positivo n es combinación lineal a coeficientes enteros de los enteros a y b, entonces n ≥ mcd(a, b). Si por un momento regresamos al ejemplo 3.5, y observamos la lista de factores comunes de 84 y 60, veremos que cada uno de ellos es a su vez un factor de mcd (84, 60). Esta situación ocurre siempre: mcd (a, b) es múltiplo de cualquier factor común de a y b. Y esa propiedad es otra manera de caracterizar al máximo común divisor. Teorema 3.13. Sean a y b enteros no ambos nulos, y sea d un entero. Se tiene que d = mcd (a, b) si, y sólo si, d es un divisor común positivo de a y de b que es divisible por todos los divisores comunes de a y b. 40 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO Demostración. Para la ida, supongamos que d = mcd (a, b). Entonces d es positivo y divide a a y a b. Sea k un divisor común de a y de b. Entonces, k divide a cualquier combinación lineal a coeficientes enteros de a y de b (proposición 2.26), en particular a mcd (a, b) (teorema 3.10). Ahora, supongamos que d es un divisor común positivo de a y de b que es divisible por todos los divisores comunes de a y b. En particular, es divisible por mcd (a, b), por lo que mcd (a, b) ≤ d (proposición 2.9). Pero como d es factor común de a y b, es d ≤ mcd (a, b). Luego, d = mcd (a, b). Teorema 3.14. Sean a y b enteros no ambos nulos, y sea d un número natural. Se tiene que mcd (a, b) = d si, y sólo si, existen enteros c1 y c2 coprimos tales que a = c1 d y b = c2 d. Demostración. Primero supongamos que mcd (a, b) = d. Entonces, d | a y d | b, por lo que existen c1 , c2 ∈ Z tales que a = c1 d y b = c2 d. Sea t un factor común positivo de c1 y c2 . Existen c′1 , c′2 ∈ Z tales que c1 = c′1 t y c2 = c′2 t, por lo que a = c′1 (td) y b = c′2 (td). O sea que td es un divisor común de a y de b, por lo que debe ser td ≤ mcd (a, b), vale decir, td ≤ d. Entonces debe ser t = 1, es decir, el único factor positivo en común que tienen c1 y c2 es 1. Por lo tanto, mcd (c1 , c2 ) = 1. Ahora vamos por la recíproca: supongamos que existen enteros coprimos c1 y c2 tales que a = c1 d y b = c2 d. Queremos mostrar que d = mcd (a, b). Por ser c1 y c2 coprimos, la Identidad de Bezout nos dice que existen enteros s, t tales que sc1 +tc2 = 1. Multiplicando miembro a miembro por d y considerando que c1 d = a, c2 d = b, tenemos que sa + tb = d. Por la observación 3.12 resulta d ≥ mcd(a, b), y como d es factor común de a y b, es d ≤ mcd(a, b). En consecuencia, d = mcd(a, b). 1.2.1. El algoritmo extendido de Euclides. Dados enteros a y b no ambos nulos, el teorema 3.10 asegura la existencia de enteros s y t tales que sa+tb = mcd (a, b), pero no da indicios de cómo calcular tales números s y t. Si a y b son números chicos, un simple tanteo puede proporcionarlos fácilmente, pero si alguno de ellos es grande la cosa se complica. Resulta que existe un algoritmo que recibe los enteros a y b, y que termina contestando una terna de enteros (s, t, g) en donde g = mcd (a, b), y además sa + tb = g. Es decir, entrega de una sola vez el máximo común divisor de a y b y una pareja de enteros que muestran que mcd (a, b) es combinación lineal a coeficientes enteros de a y b. Con toda justicia, el algoritmo se llama algoritmo extendido de Euclides, pues hace un poco más que lo que hace el algoritmo de Euclides, pero a la manera del algoritmo de Euclides: por divisiones sucesivas. Los lineamientos del diseño del algoritmo extendido son los siguientes: Si b = 0, entonces mcd (a, b) = |a|. Por eso, alcanza con tomar s = t = 0, pues, en ese caso, |a| a (es un entero que vale 1 ó −1) y |a| · a + 0 · b = |a| = mcd (a, b) a , 0, |a| . Entonces, en este caso, el algoritmo debe contestar la terna |a| a Si b 6= 0, podemos pensar en la división entre a y b. Digamos que el cociente es c y el resto r. Es decir, a = bc + r con 0 ≤ r < |b|. Sabemos que mcd (a, b) = mcd (b, r). Por lo tanto, si tuviésemos un par de enteros (s′ , t′ ) tales que s′ b + t′ r = mcd (b, r), tendríamos que s′ b + t′ r = mcd (a, b). Pero r = a − bc, por lo que, sustituyendo, nos queda que s′ b + t′ (a − bc) = mcd (a, b), es decir, s′ b + t′ a − t′ bc = mcd (a, b). Acomodando esta expresión, resulta que t′ a + (s′ − t′ c) b = mcd (a, b). Es decir, tomando s = t′ y t = s′ − t′ c (en donde c y r son cociente y resto de a dividido b, y s′ y t′ son los coeficientes que muestran que mcd (b, r) es combinación lineal de b y r), tenemos los enteros s y t que buscamos: los que cumplen sa + tb = mcd (a, b). O sea que el problema de encontrar enteros para a y b pasa por encontrar enteros para b y r: indicio de una llamada recursiva. Entonces se resuelve, por recursividad, el problema de encontrar s y t para que sa + tb = mcd (a, b), resolviendo el mismo problema pero con argumentos más chicos, pues el par (b, r) es menor (en segunda componente) que el par (a, b). En las sucesivas llamadas recursivas que hagamos a la función que ejecuta la tarea, el segundo argumento va decreciendo, hasta que tarde o temprano llega a ser 0, que es un caso de salida garantizada. En definitiva, el algoritmo extendido de Euclides, escrito en notación algorítmica, es así: sa + tb = euclext(a, b) = , 0, |a| si (b = 0) contestar |a| a sino sea (c, r) = crent(a, b) sea (s′ , t′ , g) = euclext(b, r) contestar (t′ , s′ − t′ c, g) Ejemplo 3.15. Encontrar s y t tales que s · 1.956 + t · 328 = mcd (1.956, 328). Invocaremos, para la tarea encomendada, euclext(1.956, 328). 1. MÁXIMO COMÚN DIVISOR 41 1. Para evaluar euclext(1.956, 328) hacemos a = 1.956 y b = 328. Como b no es 0, hacemos el cálculo intermedio (c, r) = cr(1.956, 328) = (5, 316) (obviaremos los detalles de la invocación a cr). Ahora invocamos euclext (328, 316), por lo que quedamos en suspenso hasta tener ese resultado. Cuando eso pase, debemos tener presente que, a esta altura, c vale 5. 2. Para evaluar euclext (328, 316) hacemos a = 328 y b = 316. Como b no es 0, hacemos el cálculo intermedio (c, r) = cr (328, 316) = (1, 12). Ahora invocamos euclext (316, 12), por lo que quedamos en suspenso hasta tener ese resultado. Cuando eso pase, debemos tener presente que, a esta altura, c vale 1. 3. Para evaluar euclext (316, 12) hacemos a = 316 y b = 12. Como b no es 0, hacemos el cálculo intermedio (c, r) = cr (316, 12) = (26, 4). Ahora invocamos euclext (12, 4), por lo que quedamos en suspenso hasta tener ese resultado. Cuando eso pase, debemos tener presente que, a esta altura, c vale 26. 4. Para evaluar euclext (12, 4) hacemos a = 12 y b = 4. Como b no es 0, hacemos el cálculo intermedio (c, r) = cr (12, 4) = (3, 0). Ahora hacemos (s′ , t′ , g) = euclext (4, 0), por lo que quedamos en suspenso hasta tener ese resultado. Cuando eso pase, debemos tener presente que, a esta altura, c vale 3. 5. Para evaluar euclext (4, 0) hacemos a = 4 y b = 0. No hay que hacer ningún cálculo intermedio, pues el segundo argumento es 0. Por lo tanto, euclext (4, 0) = (1, 0, 4). 6. Volviendo al paso 4, resultó ser (s′ , t′ , g) = (1, 0, 4). Por lo tanto, euclext (12, 4) = (0, 1, 4) (recordar que en ese paso era c = 3, y entonces s′ − t′ c = 1 − 0 · 3 = 1). 7. Volviendo al paso 3, resultó ser (s′ , t′ , g) = (0, 1, 4). Por lo tanto, euclext (316, 12) = (1, −26, 4) (recordar que en ese paso era c = 26, y entonces s′ − t′ c = 0 − 1 · 26 = −26). 8. Volviendo al paso 2, resultó ser (s′ , t′ , g) = (1, −26, 4). Por lo tanto, euclext (328, 316) = (−26, 27, 4) (recordar que en ese paso era c = 1, y entonces s′ − t′ c = 1 − (−26) · 1 = 27). 9. Volviendo al paso 1, resultó ser (s′ , t′ , g) = (−26, 27, 4). Por lo tanto, euclext(1.956, 328) = (27, −161, 4) (recordar que en ese paso era c = 5, y entonces s′ − t′ c = −26 − 27 · 5 = −161). En síntesis, euclext(1.956, 328) = (27, −161, 4). Del ejemplo 3.8, sabemos que mcd(1.956, 328) = 4, o sea que la tercera componente de la terna está bien. Veamos las otras dos componentes: 27 · 1.956 + (−161) · 328 = 52.812 − 52.808 = 4 = mcd (1.956, 328) O sea que se verifica lo deseado. Por lo tanto, podemos tomar s = 27 y t = −161. El proceso de más arriba para encontrar s y t puede ser mecanizado de la siguiente forma: 1. Si b 6= 0, escribir la ecuación de la división entre a y b. Digamos que el cociente es c1 y el resto r1 . 2. Si r1 6= 0, escribir la ecuación de la división entre b y r1 . Digamos que el cociente es c2 y el resto r2 . 3. Si r2 6= 0, escribir la ecuación de la división entre r1 y r2 . Digamos que el cociente es c3 y el resto r3 . 4. Si r3 6= 0, escribir la ecuación de la división entre r2 y r3 . Digamos que el cociente es c4 y el resto r4 . Y continuar de esta forma, obteniendo en cada paso, ck y rk , hasta que lleguemos a una instancia en que obtengamos un cn y rn con rn = 0. Esto finalmente va a ocurrir, pues la sucesión de restos es estrictamente decreciente, y en algún paso debemos llegar a tener resto 0. Entonces rn−1 (el último resto no nulo del proceso) es precisamente mcd (a, b). Los enteros s y t se obtienen eliminando r1 , r2 , . . ., rn−1 del conjunto de ecuaciones de división que hemos escrito. Ejemplo 3.16. Aplicar el procedimiento de más arriba para encontrar s y t tales que s · 1.956 + t · 328 = mcd (1.956, 328). Hacemos primero las divisiones sucesivas hasta llegar a tener resto nulo: 1.956 328 = = 316 12 = = 328 · 5 + 316 316 · 1 + 12 12 · 26 + 4 4·3 El último resto no nulo encontrado es 4, por lo que mcd (1.956, 328) = 4. De la penúltima ecuación, 4 = 316 − 12 · 26. Pero, de la segunda, es 12 = 328 − 316 · 1, por lo que 4 = 316 − (328 − 316 · 1) · 26, es decir, 4 = 316 · 27 − 328 · 26. Y, de la primera ecuación, 316 = 1.956 − 328 · 5, así que 4 = (1.956 − 328 · 5) · 27 − 328 · 26. Por lo tanto, 27 · 1.956 + (−5 · 27 − 26) · 328 = 4, es decir, 27 · 1.956 + (−161) · 328 = 4. Entonces podemos tomar s = 27 y t = −161. 1.3. Otro algoritmo para M.C.D. Obtendremos ahora otro método para calcular mcd(a, b), considerando la paridad de los argumentos a y b. Veamos primero un resultado que nos ayudará a calcular máximo común divisor de dos números que tienen un factor común. Teorema 3.17. Sean a y b dos enteros no ambos nulos, y sea m un entero positivo. Entonces, mcd (m · a, m · b) = m · mcd (a, b) 42 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO Demostración. Llamemos D = mcd(m · a, m · b) y d = mcd(a, b). Por la Identidad de Bezout, existen enteros s, t tales que sa + tb = d, así que multiplicando miembro a miembro por m tenemos que s(ma) + t(mb) = md. Como m y d son enteros positivos, por la observación 3.12 se cumple que md ≥ D. Además, como d | a y d | b, tenemos que md | ma y md | mb, es decir, md es factor común de ma y mb, así que md ≤ D. Por lo tanto, md = D, que es lo que deseábamos demostrar. Con esto, y viendo el ejemplo 3.8, podemos decir que mcd (7.824, 1.312) = 16, pues 7.824 = 4· 1.956 y 1.312 = 4·328; como ya teníamos que mcd(1.956, 328) = 4, resulta mcd (7.824, 1.312) = mcd (4 · 1.956, 4 · 328) = 4 · mcd (1.956, 328) = 4 · 4 = 16. Corolario 3.18. Si d es un factor común positivo de a y b, entonces 1 a b = mcd (a, b) , mcd d d d Demostración. Como d es factor común positivo de a y b, existen enteros c1 y c2 tales que a = c1 d y b = c2 d. Luego, d1 mcd (a, b) = d1 mcd (c1 d, c2 d) = d1 · d · mcd (c1 , c2 ) = mcd ad , db . Corolario 3.19. Sean a y b enteros no ambos nulos. Entonces, los números mos. a mcd(a,b) y b mcd(a,b) son copri- Demostración. mcd (a, b) es un factor común positivo de a y b, por lo que, por corolario 3.18, se tiene que mcd a b , mcd (a, b) mcd (a, b) = 1 mcd (a, b) = 1 mcd (a, b) Nótese que el corolario anterior se puede deducir también del teorema 3.13. Teorema 3.20. Sean a, b y m enteros con m 6= 0. Si m | ab y m es coprimo con b, entonces m | a. Demostración. m | am, y por hipótesis m | ab. Entonces, m es un divisor común de am y ab, por lo que, por teorema 3.13, m | mcd (am, ab). Pero del teorema 3.17, sabemos que mcd (am, ab) = |a| · mcd (m, b) = |a|, pues, por hipótesis, mcd (b, m) = 1. Por lo tanto, m | a. Teorema 3.21. Sean a y b enteros no ambos nulos. Sea m un entero coprimo con a y también coprimo con b. Entonces, m es también coprimo con ab. Demostración. Del teorema 3.10, existen enteros s1 , t1 , s2 , t2 tales que s1 a + t1 m = 1 y s2 b + t2 m = 1. Multiplicando miembro a miembro estas dos igualdades, queda que (s1 s2 )ab + (s1 at2 + t1 s2 b + t1 t2 m)m = 1 mostrando que 1 es una combinación lineal positiva a coeficientes enteros de ab y m. Como mcd (ab, m) es la menor combinación lineal positiva a coeficientes enteros de ab y m (corolario 3.11), se sigue que mcd (ab, m) = 1. Teorema 3.22. Sean a y b enteros no ambos nulos. Sea m un entero coprimo con b. Entonces, mcd (am, b) = mcd (a, b). Demostración. Sean g = mcd (a, b) y G = mcd(am, b). Como g | a y g | b, se tiene que g | am y g | b, de donde g ≤ G. Tenemos también que G | am y G | b. Debe ser G coprimo con m (pues sea t un factor positivo de G y m; como G | b, debe ser t | b y t | m; siendo m y b coprimos, debe ser t = 1). Por teorema 3.20, se tiene entonces que G | a, y por lo tanto G es factor común de a y b. Por ello, G ≤ g. En consecuencia, G = g, es decir, mcd(am, b) = mcd(a, b). Los teoremas 3.17 y 3.22, junto con el corolario 3.9, permiten diseñar un nuevo algoritmo para encontrar mcd (a, b) de acuerdo a los siguientes lineamientos: Si alguno de los dos es 0, el máximo común divisor es el módulo del otro número. Si tanto a como b son pares, aplicamos el teorema 3.17 con m = 2: mcd (a, b) = 2 · mcd a2 , 2b , sin peligro alguno pues a/2 y b/2 son enteros. Si a es par (a, b) = y b impar, aplicamos el teorema 3.22 con m = 2. Entonces, en este caso, es mcd mcd a2 , b . Si fuese a impar y b par, por la misma razón tenemos que mcd (a, b) = mcd a, 2b 1. MÁXIMO COMÚN DIVISOR 43 Si ambos son impares, y a ≥ b, aplicamos el corolario 3.9 (caso k = −1), resultando que mcd (a, b) = mcd (a − b, b); pero además b es impar y a − b par, por lo que, por el ítem anterior, resulta mcd (a, b) = que si por ejemplo a = 1 y b = −1, esto nos conduce a que mcd (1, −1) = mcd a−b 2 , b . Observemos mcd 1−(−1) , −1 = mcd (1, −1), es decir, a una “circularidad” que sería muy peligrosa en un algoritmo 2 recursivo. Para salvarla, podemos poner como segunda componente no a b sino a |b|, sin cambiar el valor del M.C.D. Entonces, mcd (a, b) = mcd a−b , |b| en el caso en que a y b sean ambos impares. 2 . Análogamente, cuando a y b son impares con b > a, se tiene que mcd (a, b) = mcd |a| , b−a 2 Como vemos, el procedimiento consiste en ir sacando factores 2. Por eso, al correspondiente algoritmo lo podemos llamar mcd2 (a, b). Su especificación en la notación funcional es la siguiente: mcd2(a, b) = si (a = 0) contestar |b| sino si (b = 0) contestar |a| sino si (a es par) si (b es par) contestar 2 ·mcd2 a2 , 2b sino contestar mcd2 a2 , b sino si (b es par) contestar mcd2 a, 2b sino si (a ≥ b) contestar mcd2 a−b 2 , |b| sino contestar mcd2 |a| , b−a 2 Ejemplo 3.23. Calcular mcd (84, 60) por aplicación del algoritmo mcd2. mcd2 (84, 60) = 2 · mcd2 (42, 30) = 2 · (2 · mcd2 (21, 15)) = 4 · mcd2 (3, 15) = 4 · mcd2 (3, 6) = 4 · mcd2 (3, 3) = 4 · mcd2 (0, 3) = 4 · 3 = 12. Luego, mcd (84, 60) = 12. Una cuestión interesante es la de comparar eficiencias de los dos algoritmos rápidos que tenemos para calcular mcd (a, b): el de Euclides (que hemos llamado mcdeucl (a, b)) y este último, mcd2 (a, b). Para eso, se puede programar una computadora con ambos algoritmos, y luego invocar a cada uno de ellos muchas veces, con distintos valores de a y de b seleccionados al azar por la máquina, midiendo el tiempo que tarda cada algoritmo en ejecutarse. Se han hecho pruebas de programación en el lenguaje C++, implementando ambos algoritmos exactamente de la forma en que aquí están expresados. Se ha comprobado que un millón de ejecuciones del algoritmo mcdeucl requirió un tiempo total de 9,1 seg., mientras que idéntica cantidad de invocaciones a mcd2 demandó 9,5 seg., resultando entonces que el algoritmo de Euclides es un 4 % más rápido que el otro. Ambos son extraordinariamente más rápidos que el algoritmo de búsqueda de factores comunes dado por la definición. 1.4. Máximo común divisor de un conjunto de números. Hasta ahora hemos considerado la búsqueda del M.C.D. de dos números. Podemos extender esta idea para el caso en que tengamos más de dos números. Definición 3.24. Sean a1 , . . . , an números enteros no todos nulos. El entero d es un divisor común de a1 , . . . , an si d | a1 ∧ . . . ∧ d | an , es decir, si ∀k ∈ {1, . . . , n} , d | ak . El máximo común divisor de a1 , . . . , an , denotado mcd (a1 , . . . , an ), es el mayor de los divisores comunes de a1 , . . . , an . Nótese que mcd (a1 , . . . , an ) es siempre un entero positivo. Definición 3.25. Los enteros a1 , . . . , an se dicen coprimos si mcd (a1 , . . . , an ) = 1. Los enteros a1 , . . . , an se dicen coprimos de a pares si para todos i 6= j, mcd (ai , aj ) = 1. Nótese que los enteros a1 , . . . , an pueden ser coprimos sin ser coprimos de a pares. Por ejemplo, para los enteros 3, 5, 6, se tiene que mcd (3, 5, 6) = 1 pero mcd (3, 6) 6= 1. Lo que sí ocurre siempre es que coprimidad de a pares implica coprimidad. Proposición 3.26. Si a1 , . . . , an son coprimos de a pares, entonces son coprimos. Demostración. Demostraremos por el método indirecto. Supongamos que a1 , . . . , an no son coprimos. Entonces a1 y an tienen un factor común mayor que 1, por lo que mcd (a1 , an ) 6= 1. Entonces, a1 , . . . , an no son coprimos de a pares. Los siguientes resultados son generalizaciones directas de los correspondientes resultados para M.C.D. de dos enteros, siendo su demostración completamente análoga y sin complicaciones por el paso de dos enteros a n enteros. 44 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO Teorema 3.27. Sean a1 , . . . , an enteros no todos nulos. Existen enteros x1 , . . . , xn tales que x1 a1 + · · · + xn an = mcd (a1 , . . . , an ). Corolario 3.28. Sean a1 , . . . , an enteros no todos nulos. El mcd (a1 , . . . , an ) es la menor de las combinaciones lineales positivas a coeficientes enteros de a1 , . . . , an . Teorema 3.29. Sean a1 , . . . , an enteros no todos nulos, y sea d un entero. Se tiene que d = mcd (a1 , . . . , an ) si, y sólo si, d es un divisor común positivo de a1 , . . . , an que es divisible por todos los divisores comunes de a1 , . . . , an . Para el cálculo de mcd (a1 , . . . , an ), podemos prescindir de los elementos nulos de la lista: el conjunto de divisores de 0 es Z − {0}, que contiene al conjunto de divisores de los elementos no nulos; por lo tanto, la intersección de todos los conjuntos de divisores es igual a la intersección de los conjuntos de divisores de los elementos distintos de 0. Por eso, a los fines prácticos, podemos hacer de cuenta que todos los números que hay en la lista son distintos de 0. La búsqueda de mcd (a1 , . . . , an ) puede hacerse aplicando reiteradas veces el algoritmo para calcular el máximo común divisor de dos números, según se muestra a continuación. Teorema 3.30. Sean a1 , . . . , an enteros no nulos. Hagamos D1 = a1 , y, para k ∈ {2, . . . , n}, llamemos Dk = mcd (a1 , . . . , ak ). Entonces, para cualquier k ≥ 2, es Dk = mcd (Dk−1 , ak ). Demostración. Si k = 2, D2 = mcd (a1 , a2 ) = mcd (D1 , a2 ) y entonces la proposición se cumple. Si k > 2, queremos ver que Dk = mcd (Dk−1 , ak ). Observando que mcd (Dk−1 , ak ) es un divisor común de Dk−1 y de ak , y dado que Dk−1 | ai para cualquier i ∈ {1, . . . , k − 1}, tenemos que mcd (Dk−1 , ak ) | ai para cualquier i ∈ {1, . . . , k}, por lo que mcd (Dk−1 , ak ) | Dk (teorema 3.29). Por otro lado, Dk es factor común de a1 , . . . , ak−1 , ak . En particular, Dk es factor común de a1 , . . . , ak−1 . Por teorema 3.29, Dk | mcd (a1 , . . . , ak−1 ), es decir, Dk | Dk−1 . Como también Dk | ak , se tiene que Dk | mcd (Dk−1 , ak ) (teorema 3.13). Dado que los naturales Dk y mcd (Dk−1 , ak ) son uno factor del otro, se tiene que Dk = mcd (Dk−1 , ak ) (proposición 2.10). Como consecuencia del teorema anterior, tenemos un mecanismo para calcular mcd (a1 , a2 , . . . , an ), según se muestra en el siguiente ejemplo. Ejemplo 3.31. Calcular mcd (1.956, 328, 402). Primero hacemos D1 = 1.956. Luego, calculamos mcd(D1 , 328) = mcd(1.956, 328) = 4 (ejemplo 3.8). Finalmente calculamos D3 = mcd(D2 , 402) = mcd(4, 402), que, por aplicación de cualquier algoritmo (prefiero el tanteo en este caso), resulta igual a 2. Entonces, mcd (1.956, 328, 402) = 2. 2. Mínimo común múltiplo En muchas aplicaciones, se tiene una lista a1 , . . . , an de números enteros todos distintos de 0, e interesa encontrar otro entero que sea múltiplo simultáneamente de todos ellos. Por ejemplo, cuando se desea hacer una suma de números racionales que están expresados como cocientes de enteros. A los efectos de no sobrecargarnos con cálculos tediosos, siempre tratamos que ese múltiplo en común sea lo más pequeño posible. En esta sección nos ocuparemos de exponer métodos para calcularlo, previa definición formal del mismo. Nos concentraremos sólo en el caso correspondiente a dos enteros. Definición 3.32. Dados dos enteros a y b ambos no nulos, un múltiplo común a a y b es cualquier número que es divisible simultáneamente por a y por b. Es decir, c es múltiplo común de a y b si a | c y b | c. El menor de todos los múltiplos comunes positivos de a y b se denomina mínimo común múltiplo de a y b, y se denota por mcm (a, b). Veamos que la definición tiene sentido: si a 6= 0 y b 6= 0, entonces |ab| > 0 y |ab| es divisible por a y por b. Entonces, el conjunto de los múltiplos comunes positivos de a y b es un subconjunto no vacío de N, y entonces, por el PBO, mcm (a, b) es un número bien definido. Obsérvese que 0 es siempre un múltiplo común de a y b, pero no cuenta a la hora de calcular el mínimo común múltiplo de a y b, pues, por definición, siempre es mcm (a, b) > 0. Además, por lo que acabamos de decir, siempre es mcm (a, b) ≤ |ab|. Ejemplo 3.33. Calcular mcm (18, 12). Podemos empezar observando que los múltiplos positivos de 18 son 18, 36, 54, 72, 90, 108, 126, 144, . . . y que los de 12 son 12, 24, 36, 48, 60, 72, 84, 96, 108, . . . Los múltiplos positivos comunes a ambos son 36, 72, 108, . . ., de los cuales el menor es 36. Por lo tanto, mcm (18, 12) = 36. En el ejemplo hemos empleado un algoritmo poco eficiente: el de elaborar la lista de múltiplos de ambos, hacer la intersección y ver el elemento mínimo. En mucho, esto se parece a la búsqueda de mcd (a, b) por elaboración de listas de factores comunes. Afortunadamente, hay otras maneras, mucho más eficientes, para calcular mcm (a, b). Notemos que mcm (a, b) = mcm (|a| , |b|) (proposición 2.23), así que alcanza con saber calcular mínimo común múltiplo de enteros positivos. 2. MÍNIMO COMÚN MÚLTIPLO 45 Una primera cosa que nos puede llamar la atención de nuestro ejemplo anterior es que todos los múltiplos comunes de 12 y 18 son divisibles por mcm (18, 12). Demostraremos ahora que eso es cierto en general. Teorema 3.34. Sean a y b enteros no nulos, y sea h un entero. Se tiene que h = mcm (a, b) si, y sólo si, h es un múltiplo común positivo de a y b que es un factor de cualquier múltiplo común de a y b. Demostración. Para la ida: Por definición, h es un múltiplo común positivo de a y b, por lo que existen t1 , t2 ∈ Z tales que h = t1 a y h = t2 b. Sea m un múltiplo común de a y b, por lo que existen n1 , n2 ∈ Z tales que m = n1 a y m = n2 b. Sean c y r el cociente y resto de dividir m por h. Entonces, tenemos que m = ch + r con 0 ≤ r < h. Reemplazando a m y h en esta ecuación en términos de a, tenemos que n1 a = ct1 a + r, por lo que r = (n1 − ct1 ) a es decir, a | r. Análogamente, n2 b = ct2 b + r, por lo que r = (n2 − ct2 ) b es decir, b | r. Luego, r es un múltiplo común de a y b. Sabemos que h > r ≥ 0. No puede ser r > 0, pues en ese caso sería un múltiplo común positivo de a y b menor que mcm (a, b), contradiciendo la definición de mínimo común múltiplo. Por lo tanto, es r = 0, y entonces m = ch, es decir, m es un múltiplo de mcm (a, b). Para la vuelta: Como h es múltiplo común positivo de a y b, se tiene que h ≥ mcm (a, b). Como mcm (a, b) es múltiplo común de a y b, h | mcm (a, b). Dado que h y mcm (a, b) son ambos positivos, es h ≤ mcm (a, b) (proposición 2.9). Luego, h = mcm (a, b). Teorema 3.35. Sean a y b enteros no nulos, y sea m un entero positivo. Se tiene que mcm (m · a, m · b) = m · mcm (a, b). Demostración. Hagamos h = mcm (ma, mb) y h′ = mcm (a, b). Como h es múltiplo de ma, es múltiplo de m, por lo que existe n1 ∈ Z tal que h = n1 m. Más aún, como m y h son ambos positivos, debe ser n1 ∈ Z+ . Como a | h′ y b | h′ , tenemos que am | h′ m y que bm | h′ m, es decir, h′ m es múltiplo común de am y bm. Entonces, por teorema 3.34, h | h′ m, es decir, n1 m | h′ m, de donde se ve que n1 | h′ . Por otra parte, am | h y bm | h, es decir, am | n1 m y bm | n1 m, por lo que a | n1 y b | n1 ; entonces, de nuevo por el teorema 3.34, h′ | n1 . Ya que n1 | h′ y h′ | n1 , siendo ambos enteros positivos, tenemos que n1 = h′ (proposición 2.10). Por lo tanto, h = h′ m, es decir, mcm (m · a, m · b) = m · mcm (a, b). 2.1. Obtención del M.C.M. a partir del M.C.D. Los siguientes resultados proporcionan una manera eficiente de calcular mcm (a, b) (siempre que sepamos calcular eficientemente mcd (a, b)). Lema 3.36. Sean a y b enteros no nulos coprimos. Entonces, mcm (a, b) = |ab|. Demostración. Hagamos h = mcm (a, b), recordando que es h > 0. Como h es múltiplo de a, también es múltiplo de |a|, por lo que existe m ∈ N tal que h = m |a|. Entonces, como b | h, tenemos que b divide a m |a|. Pero puesto que por hipótesis b es coprimo con a, debe ser que b | m (teorema 3.20). Por lo tanto, es |b| ≤ m, y entonces |ab| ≤ |a| m = h. Es decir, |ab| ≤ mcm (a, b). Pero también sabemos que siempre es mcm (a, b) ≤ |ab|, pues |ab| es un múltiplo común de a y b. Por lo tanto, mcm (a, b) = |ab|. Teorema 3.37. Sean a y b enteros no nulos. Se tiene que mcm (a, b) = |ab| mcd (a, b) Demostración. Sea g = mcd (a, b). Del corolario 3.19, tenemos que mcd (a/g, b/g) = 1. Por lo tanto, por el lema 3.36, es a b |ab| a b = mcm = , g g g g g2 Esto equivale a que g · mcm Pero, por el teorema 3.35, es g · mcm a b , g g a b , g g = |ab| g a b = mcm g , g g g = mcm (a, b) Por lo tanto, mcm (a, b) = |ab| mcd (a, b) 46 3. MÁXIMO COMÚN DIVISOR. MÍNIMO COMÚN MÚLTIPLO 3. Ecuaciones diofantinas lineales Ecuaciones del estilo ax + by = c en las variables reales x e y nos son completamente familiares, y lo primero que se nos viene a la mente cuando vemos una ecuación así es una línea recta en un plano cartesiano. Incluso en el caso en que a, b y c sean números enteros. Pero ahora podemos preguntarnos: ¿Tiene soluciones para x e y enteros? Por supuesto que la pregunta atañe no sólo a las ecuaciones lineales, sino también a otras más generales (y tal vez con más variables). En resumen, dada una ecuación a coeficientes enteros, ¿bajo qué condiciones admite soluciones enteras para las variables intervinientes? Parece ser que uno de los primeros en interesarse en estas cuestiones fue el griego Diofanto, y, en su honor, se llamó ecuaciones diofantinas a aquellas con coeficientes enteros y en las que se buscan soluciones enteras para las variables. Desde entonces y hasta nuestros días, mucho es lo que se ha investigado sobre ellas, pues surgen naturalmente en diferentes contextos. Las más sencillas de tales ecuaciones son las ecuaciones diofantinas lineales, que tienen la forma ax + by = c con a, b, c ∈ Z. Tales ecuaciones han sido completamente entendidas, y, en su resolución, es de suma importancia conocer el máximo común divisor de a y de b, y su relación con el entero c. El caso en que a = 0 = b es completamente trivial: si c 6= 0, la ecuación no admite solución, y si c = 0 el conjunto solución es Z2 . Así que sólo nos dedicaremos a estudiar el caso en que a y b no son simultáneamente nulos. Ante todo, observemos que, cuando nos preguntábamos por la existencia de enteros s y t tales que sa + tb = mcd (a, b), para a y b dados, estábamos resolviendo una ecuación diofantina lineal. Así que algo de experiencia tenemos ya al respecto: sabemos que una ecuación diofantina lineal admite solución en Z2 en el caso en que el término independiente c es precisamente mcd (a, b). Este punto de partida nos permite deducir una condición necesaria y suficiente para que una ecuación diofantina lineal cualquiera admita solución en Z2 . Teorema 3.38. Sean a, b y c enteros tales que a y b no son ambos nulos. La ecuación diofantina lineal ax + by = c tiene solución para x e y enteros si, y sólo si, c es múltiplo de mcd (a, b). Demostración. Para la ida, supongamos que existen enteros x0 e y0 tales que ax0 + by0 = c. Dado que mcd (a, b) es factor de a y de b, por proposición 2.26, se tiene que mcd (a, b) es factor de ax0 + by0 , es decir, mcd (a, b) es divisor de c. Esto equivale a decir que c es múltiplo de mcd (a, b). Para la vuelta: supongamos que c es múltiplo de mcd (a, b), es decir, existe k ∈ Z tal que c = k · mcd (a, b). Por el teorema 3.10, existen enteros s y t tales que sa + tb = mcd (a, b). Multiplicando miembro a miembro por k, tenemos que (ks) a + (kt) b = k · mcd (a, b). Por lo tanto, tomando x0 = ks e y0 = kt, tenemos demostrado que existen enteros x0 , y0 tales que ax0 + by0 = c, es decir, la ecuación diofantina lineal admite solución en Z2 . Antes de ver ejemplos, discutamos sobre la cantidad de soluciones que tiene una ecuación lineal diofantina ax + by = c cuando admite al menos un par (x0 , y0 ) ∈ Z2 como solución. Designemos g = mcd (a, b). Sea (x, y) ∈ Z2 cualquier solución de la ecuación. Se tiene que ax0 + by0 = c = ax + by. Por lo tanto, a (x − x0 ) = b (y0 − y), y, entonces, (*) a b (x − x0 ) = (y0 − y) g g Si a = 0, es g = b, y la igualdad se satisface con x cualquier entero e y = y0 . Entonces, el conjunto solución es {(k, y0 ) : k ∈ Z}. Si b = 0, es g = a, y la igualdad se satisface con y cualquier entero y x = x0 . Entonces, el conjunto solución es {(x0 , k) : k ∈ Z}. Si a 6= 0 y b 6= 0: ya que a/g y b/g no tienen factores comunes (corolario 3.19), se tiene que a/g debe dividir a y0 − y y que b/g debe dividir a x − x0 (teorema 3.20). Es decir, deben existir enteros m y n tales que y0 − y = ma/g y x − x0 = nb/g. Reemplazando en la ecuación (*), tenemos que a b b a n = m g g g g de donde, para que se cumpla la igualdad, debe ser m = n (pues tanto ab como g son distintos de 0, y entonces pueden cancelarse). Por lo tanto, en este caso, todas las soluciones de la ecuación diofantina lineal tienen la forma b a (x, y) = x0 + n , y0 − n g g en donde n es un entero cualquiera (observar que esta fórmula engloba también las soluciones que obtuvimos para los casos a = 0 o b = 0). Además, es fácil verificar que cualquier par de esa forma es solución de la ecuación, porque a b a b + b y0 − n = ax0 + an + by0 − bn = ax0 + by0 = c a x0 + n g g g g Tenemos entonces demostrado el siguiente resultado. 3. ECUACIONES DIOFANTINAS LINEALES 47 Teorema 3.39. Sean a y b enteros no ambos nulos, y supongamos que la ecuación diofantina lineal ax+by = c admite solución (x0 , y0 ) ∈ Z2 . Entonces, el conjunto de todas las soluciones en Z2 de la ecuación es el conjunto a b :n∈Z , y0 − n x0 + n mcd (a, b) mcd (a, b) Ejemplo 3.40. Encontrar todas las soluciones enteras de 1.956x + 328y = 5. Tomamos a = 1.956 y b = 328. Del ejemplo 3.8, sabemos que mcd (1.956, 328) = 4, que no es factor de 5. Luego, la ecuación no tiene solución para x e y enteros. Ejemplo 3.41. Encontrar todas las soluciones enteras de 1.956x + 328y = 12. Tomamos a = 1956 y b = 328. Tenemos que mcd(1.956, 328) | 12, pues 12 = 4 · 3. Por lo tanto, busquemos una solución a la ecuación. Del ejemplo 3.15, sabemos que los enteros s = 27 y t = −161 satisfacen 27 · 1.956 + (−161) · 328 = 4. Multiplicando miembro a miembro por 3, tenemos que 81 · 1.956 + (−483) · 328 = 12, así que una solución a la ecuación es el par (x0 , y0 ) = (81, −483). Para buscar todas las soluciones, observemos que b a = 328 = 82 = 1.956 = 489 mcd(a,b) 4 mcd(a,b) 4 Por lo tanto, el conjunto de todas las soluciones enteras de la ecuación es {(81 + 82n, −483 − 489n) : n ∈ Z} De más está decir que si graficamos este conjunto en R2 , los puntos caen sobre la recta y = − 1.956 328 x + son precisamente todos los puntos de la recta en los que ambas coordenadas son números enteros. 12 328 , y Ejemplo 3.42. Encontrar todos los enteros s y t tales que 1.956s + 328t = mcd (1.956, 328). En esta ecuación diofantina, a = 1.956, b = 328 y c = mcd(1.956, 328). De dos maneras distintas sabemos que la ecuación admite solución: por el teorema 3.10 (que nos condujo a la solución dada en el ejemplo 3.15), y por el teorema 3.38 (observando que c es múltiplo de mcd (a, b)). De cualquier modo, una solución es (x0 , y0 ) = (27, −161). Al igual que en el ejemplo anterior, b a = 328 = 82 = 1.956 = 489 mcd(a,b) 4 mcd(a,b) 4 de modo que el conjunto de todos los pares de enteros que verifican la ecuación bajo estudio es {(27 + 82n, −161 − 489n) : n ∈ Z} Generalizando el ejemplo anterior, tenemos el siguiente resultado, que responde a un interrogante que habíamos dejado planteado con anterioridad: el de si era única la pareja de enteros s y t tales que sa + tb = mcd (a, b). Teorema 3.43. Sean a y b enteros no ambos nulos. El entero mcd (a, b) puede representarse de infinitas maneras como combinación lineal de a y de b. Demostración. Del teorema 3.10, existen (s0 , t0 ) tales que s0 a + t0 b = mcd (a, b), y del teorema 3.39, el conjunto de todos los pares de enteros (s, t) que satisfacen la ecuación sa + tb = mcd (a, b) es b a :n∈Z s0 + n , t0 − n mcd (a, b) mcd (a, b) que es un conjunto infinito. Con la ayuda del teorema 3.27, el teorema 3.38 admite una inmediata generalización a las ecuaciones diofantinas lineales de varias variables. Teorema 3.44. Sean a1 , . . . , an enteros no todos nulos, y sea c un entero. La ecuación diofantina lineal a1 x1 + · · · + an xn = c tiene solución para x1 , . . . , xn enteros si, y sólo si, c es múltiplo de mcd (a1 , . . . , an ). Capítulo 4 EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA En el presente capítulo, nos dedicaremos a ver de qué manera los números primos se constituyen en las unidades fundamentales que permiten descomponer a cualquier número en un producto de ellas. Difícilmente vayamos a sorprender a alguien con el contenido del Teorema Fundamental, que asevera la existencia y unicidad de tal descomposición, pues el mismo está tan instalado en nuestra mente, desde hace ya tanto tiempo, que nos parece la cosa más obvia y natural del mundo. Sin embargo, más de uno titubearía si le solicitamos una demostración de este hecho. Además, no debe haber sido tan obvio para los matemáticos de hace más de doscientos años (y veremos aquí algo del porqué de la falta de obviedad), pues parece ser que el primero en formalizar explícitamente una demostración fue el mismísimo Gauss en su libro Disquisitiones Arithmeticae de 1801 (aunque se acepta que el resultado era ya tildado como verdadero desde mucho antes). El Teorema Fundamental nos guiará a nuevos criterios de divisibilidad y de búsqueda de máximo común divisor y mínimo común múltiplo. También nos dará pistas sobre cuántos divisores puede tener un número, sobre la posibilidad de resolver en racionales ciertas ecuaciones polinómicas (como por ejemplo saber si la raíz cuadrada de un primo puede ser racional) o, más generalmente, cuáles son todas las soluciones en N de ecuaciones tales como x2 + y 2 = z 2 . 1. Factorización de números naturales: existencia y unicidad Consideremos como universo de trabajo el conjunto de los números naturales. ¿Podemos expresar al número 60 como producto de factores de ese universo, vale decir, podemos factorizar a 60 en el universo de los naturales? Dicho de otro modo, ¿podemos dar una sucesión finita de números naturales tal que multiplicando todos los números de esa sucesión obtengamos 60? Por supuesto que sí, y no sólo una, sino varias de tales sucesiones, en las que varían tanto el número de factores intervinientes como el valor de los mismos. Por ejemplo: • {4, 15} • {3, 4, 5} • {15, 4} • { 5, 1, 4, 3} • {20, 3} • { 1, 60} • { 20, 3, 1, 1} • {60} Y hay varias más. Algunas de ellas son muy parecidas entre sí; otras constan de un único término. Definición 4.1. Sea m un número natural, y sea {p1 , p2 , . . . , pn } una sucesión finita de números naturales (no necesariamente todos distintos) tal que m = p1 p2 · · · pn . Decimos entonces que la sucesión {p1 , p2 , . . . , pn } es una factorización de m. O sea que una factorización de m no es más que una lista de números tales que, multiplicados entre sí, producen m. Convendremos que multiplicar elementos de una lista unitaria produce como resultado el único término de la lista. Representaremos a las factorizaciones de números directamente sin comas que separen elementos; eventualmente usaremos el signo de multiplicación (·). Por ejemplo, 2 · 30 es una factorización de 60. Nótese que 4 · 15 y 15 · 4, si bien contienen los mismos factores, corresponden a disposiciones en diferente orden de los mismos; como sucesiones, {4, 15} y {15, 4} son distintas. Sin embargo, si nos independizamos del orden de los factores, ambas representan la misma manera de factorizar al 60. Definición 4.2. Decimos que dos factorizaciones de un mismo número son la misma factorización (excepto por el orden de los factores) si una de ellas es una conmutación de los factores de la otra. En caso contrario, las factorizaciones se dicen distintas. Dada una factorización {q1 , q2 , . . . , qn }, es posible siempre ordenar sus términos en orden creciente, es decir, permutar sus términos de modo que resulte una sucesión {p1 , p2 , . . . , pn } con p1 ≤ p2 ≤ · · · ≤ pn (obsérvese que no pedimos estrictamente creciente, pues algunos factores pueden ser iguales). Dos factorizaciones son la misma si, y sólo si, ordenando respectivamente sus términos en orden creciente, producen la misma sucesión. Dos factorizaciones son distintas cuando la función identidad no establece una correspondencia biyectiva entre los términos de cada una; puestas respectivamente en orden creciente, no producen la misma sucesión, ya sea porque difieren en longitud o en alguno de los términos. ¿Podemos expresar al número 60 como producto de factores primos? De todas las descomposiciones que hicimos más arriba, la que más se aproxima a éso es 60 = 3 · 4 · 5, a la que lo único que le falla es que 4 no es primo. Pero no hay problema: 4 = 2 · 2, así que 60 = 3 · 2 · 2 · 5. Pudimos. Es decir, 60 es el producto de los 49 50 4. EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA números primos que componen la sucesión finita {3, 2, 2, 5}. Otra descomposición en primos para 60 es 2 · 5 · 3 · 2, que es la misma que 3 · 2 · 2 · 5 excepto por el orden de los factores (si ordenamos ambas listas en orden creciente, llegamos a un mismo resultado: {2, 2, 3, 5}). Y lo mismo va a pasar con cualquier descomposición en primos que hagamos del número 60, obviamente. ¿Obviamente? ¿Qué tan obviamente? Si estuviéramos descomponiendo un primo, la cosa sí es obvia: si p es un natural primo, p es el producto de todos los primos que componen la lista {p}, y no puede haber otra lista con otros primos pues p no tiene otros factores primos. Pero para los compuestos... Por un momento, consideremos como universo de trabajo el conjunto de los números enteros positivos pares, {2, 4, 6, 8, . . .}, y llamemos primitivo a todo elemento de ese universo que no es expresable como producto de dos o más factores de ese universo. Por ejemplo, 2 y 6 son primitivos, mientras que 4 no (4 = 2 · 2) y 8 tampoco (8 = 2 · 4). En general, son primitivos todos los números de la forma 4k + 2 con k ∈ N, es decir, son primitivos los números 2, 6, 10, 14, . . ., y todos los otros resultan compuestos. Por un argumento inductivo, se puede demostrar que cualquier número de nuestro conjunto universal es factorizable como producto de primitivos. Pero, ¿es única esa factorización, aún si disponemos los factores en orden creciente? ¡No! Por ejemplo, 60 = 2 · 30 = 6 · 10. Hay dos factorizaciones distintas para 60 en el universo de los pares. El rol que juegan los números primitivos en el caso de los números pares es el mismo que el que juegan los primos en N, en cuanto a la posibilidad de factorización de cualquier elemento del respectivo universo. ¿Qué nos garantiza entonces que en N la factorización en primos es única? Con el ejemplo de los números pares, confiamos en haber transmitido al lector la inseguridad que deben haber sentido hace años los matemáticos al respecto: ¿estaremos en la misma situación cuando hablamos de N con sus primos que cuando hablamos de los pares con sus primitivos? Es probable que esa inseguridad haya conducido a la búsqueda de una demostración formal de la existencia y unicidad de factorización en primos. El puntapié inicial hacia la demostración es el siguiente resultado, muy conocido como la regla de oro de la Aritmética. Lema 4.3. Sea p un natural primo, y sean a y b naturales. Supongamos que p | ab. Entonces p | a o p | b. Demostración. Si p | a, ya está demostrada la veracidad de la tesis. Si p no divide a a, es coprimo con a (proposición 3.4), por lo que, por teorema 3.20, es p un factor de b. Con una simple inducción, la regla de oro de la Aritmética puede generalizarse diciendo que si un primo p divide al producto a1 a2 · · · an , entonces p | ai para algún i ∈ {1, . . . , n}. Teorema 4.4. (Teorema Fundamental de la Aritmética) Todo número natural mayor que 1 puede expresarse como producto de naturales primos (con, tal vez, un solo factor). La factorización es única excepto por el orden de los factores. Demostración. Desglosaremos la prueba en dos partes: primero existencia y luego unicidad de la factorización. Existencia: Queremos ver que ∀n ≥ 2, ∃k ≥ 1, p1 , . . . , pk ∈ N tales que p1 , . . . , pk son todos primos y n = p1 · · · pk . Lo haremos por el Principio de Inducción, versión fuerte. Observemos primero que si n es un número primo, tomamos k = 1 y p1 = n, cumpliéndose que p1 es primo y n = p1 . En particular, esto muestra la existencia de la factorización para el número 2, la base de la inducción. Ahora si n no es primo, debe ser n = a · b, con 1 < a ≤ b < n. Entonces, por hipótesis inductiva, a = p1 · · · pk y b = q1 · · · qj con p1 , . . . , pk , q1 , . . . , qj todos primos. Por lo tanto, n = a · b = p1 · · · pk q1 · · · qj , mostrando que n posee al menos una factorización en primos. Unicidad: Queremos probar que si p1 · · · pk = q1 · · · qj con p1 , . . . , pk , q1 , . . . , qj todos primos y p1 ≤ · · · ≤ pk y q1 ≤ · · · ≤ qj , entonces k = j y p1 = q1 , . . . , pk = qk . Lo haremos por inducción en k (el número de factores en la factorización de la izquierda). 1. Si k = 1, no puede ser j > 1, pues, en ese caso, sería p1 = q1 · · · qj , con 1 < q1 < p1 , y entonces q1 sería un factor propio de p1 , contradiciendo que p1 es primo. Entonces j = 1, y p1 = q1 , cumpliéndose la aseveración. 2. Supongamos válido el enunciado para k, y consideremos un caso en que p1 · · · pk pk+1 = q1 · · · qj con p1 , . . . , pk , pk+1 , q1 , . . . , qj todos primos y p1 ≤ · · · ≤ pk ≤ pk+1 y q1 ≤ · · · ≤ qj . Notemos que, por el caso base de la inducción, debe ser j ≥ 2. Por la Regla de Oro tenemos que pk+1 | qm para algún m ∈ {1, . . . , j}; pero siendo ambos primos, debe ser pk+1 = qm . Como qm ≤ qj , es pk+1 ≤ qj . Por el mismo razonamiento, qj debe ser igual a algún pi ≤ pk+1 , y entonces qj ≤ pk+1 . De aquí que pk+1 = qj . Entonces, ya que p1 · · · pk pk+1 = q1 · · · qj , tenemos que p1 · · · pk = q1 · · · qj−1 . Aquí, por hipótesis de inducción, es k = j − 1 y p1 = q1 , . . . , pk = qj−1 , y entonces, en resumen, tenemos que k + 1 = j y que p1 = q1 , . . . , pk+1 = qj , según queríamos demostrar. 1. FACTORIZACIÓN DE NÚMEROS NATURALES: EXISTENCIA Y UNICIDAD 51 Observemos que la unicidad garantizada por el Teorema Fundamental sería falsa si nuestra definición de número primo hubiera permitido que 1 lo fuese. Por ejemplo, 2 = 1 · 2 = 1 · 1 · 2. Llamamos factorización canónica de un número natural a la descomposición en factores primos del mismo en la que los primos que la componen están ubicados en orden creciente. Es decir, la factorización canónica de un número tiene la forma p1 p2 · · · pk en donde p1 , p2 , . . ., pk son todos primos y 0 < p1 ≤ p2 ≤ · · · ≤ pk . Del Teorema Fundamental se desprende directamente la existencia y unicidad de la factorización canónica de cualquier natural mayor que 1. Por ejemplo, la factorización canónica de 60 es 2 · 2 · 3 · 5. Dado que varios factores de la factorización canónica pueden ser iguales, es común agruparlos y usar notación de exponenciación. De este αn 1 α2 modo, todo número a > 1 puede expresarse en su factorización canónica de la forma a = pα 1 p2 · · · pn en donde p1 , p2 , . . ., pn son todos primos, α1 , α2 , . . ., αn son todos naturales positivos y 0 < p1 < p2 < · · · < pn . Cada αi se denomina orden, o multiplicidad, del primo pi en a. Escrito de esta forma, 60 se expresa como 22 · 3 · 5, es decir, n = 3, α1 = 2, α2 = 1, α3 = 1, p1 = 2, p2 = 3 y p3 = 5. Lisa y llanamente, el Teorema Fundamental de la Aritmética establece lo siguiente: dados dos números a y b cuyas factorizaciones canónicas βk β1 β2 αn 1 α2 son, respectivamente pα 1 p2 · · · pn y q1 q2 · · · qk , se tiene que a = b si, y sólo si, k = n, p1 = q1 , p2 = q2 , . . ., pn = qk , α1 = β1 , α2 = β2 , . . ., αn = βk . Es decir, dos números son iguales si, y sólo si, sus respectivas factorizaciones canónicas contienen exactamente los mismos primos y con las mismas multiplicidades. Si algún primo de una de las factorizaciones no aparece en la otra, o si aparece con otra multiplicidad, los números a y b no pueden ser iguales. Mostramos un ejemplo del uso del Teorema Fundamental en la siguiente proposición. Proposición 4.5. Sean a y b naturales positivos y coprimos tales que ab es un cuadrado. Entonces, a y b son cuadrados. β1 βm αn 1 Demostración. Sean pα 1 · · · pn y q1 · · · qm las factorizaciones canónicas de a y b respectivamente, con + α1 , . . . , αn , β1 , . . . , βm ∈ Z . Siendo a y b coprimos, se sigue que ∀i ∈ {1, . . . , n} , ∀j ∈ {1, . . . , m} , pi 6= qj . Por hipótesis, existe c ∈ N tal que ab = c2 . Sea r1γ1 · · · rkγk la factorización canónica de c, con γ1 , . . . , γk ∈ Z+ . Entonces es β1 βm αn 1 = (r1γ1 · · · rkγk ) (pα 1 · · · pn ) q 1 · · · q m 2 es decir, 2γ1 αn β 1 βm 1 pα · · · rk2γk 1 · · · pn q1 · · · qm = r1 Sea i tal que 1 ≤ i ≤ n. La multiplicidad de pi en el miembro de la izquierda de la anterior igualdad es αi (pues ninguno de los qj es igual a pi ). Entonces, debe haber un t ∈ {1, . . . , k} tal que pi = rt , por lo que la multiplicidad de pi en el miembro de la derecha es 2γt . Por el Teorema Fundamental, debe ser αi = 2γt . Como i se eligió arbitrariamente, se ve que la multiplicidad de cada primo en la factorización de a es par, es decir, 2 1 2jn = pj11 · · · pjnn , para j1 , . . . , jn naturales positivos. Entonces, a es el cuadrado del número a = p2j 1 · · · pn natural pj11 · · · pjnn . Análogamente se demuestra que b también es un cuadrado. A veces, es conveniente usar una pequeña variación para la forma canónica con exponentes, permitiendo que algunos exponentes sean 0. Por ejemplo, 45 = 20 · 32 · 5. Esta forma de factorización es útil por varios motivos: Todo natural positivo es expresable de esta forma. Esto incluye al 1. Por ejemplo, 1 = 20 = 20 · 50 , etc. Cuando se desea estudiar propiedades relativas a la factorización en primos de dos o más números, siempre puede hacerse de cuenta que las listas de los primos que intervienen en las respectivas factorizaciones son idénticas (pues si un primo no aparece en la factorización canónica de un número, se lo puede incluir con exponente 0). Cuando dos números están expresados como producto de potencias de primos de una misma lista, tenemos que ambos son iguales si, y sólo si, los correspondientes primos en cada factorización tienen exponentes iguales. 1.1. El Teorema Fundamental de la Aritmética en enteros. Si recordamos nuestra definición de número primo en el ámbito de los números enteros, tenemos que por cada natural primo encontramos un primo negativo también. Con la regla de los signos presente, nos preguntamos por la existencia y unicidad de descomposición en factores primos enteros de un dado número entero a de módulo mayor que 1. La existencia es bastante obvia, pues |a| es natural y admite factorización en factores primos naturales (que también son enteros), así que a admite esa misma factorización salvo que cambiando de signo al primer factor en el caso en que a es negativo. Pero enseguida nos damos cuenta de que las posibilidades de descomponer a a en factores primos enteros pueden ser muchas. Por ejemplo, 60 = 2 · 2 · 3 · 5 = (−2) · 2 · (−3) · 5 = (−2) · (−2) · (−3) · (−5). En todas estas descomposiciones del 60, ni siquiera intervienen los mismos primos. Pero la cosa cambia si nos preguntamos por descomponer a un entero de módulo mayor que 1 en factores primos naturales (anteponiendo, quizá, un signo menos). Allí, la descomposición de a ∈ Z es la misma que la de |a| ∈ N, salvo que multiplicada por un número s que vale 1 o −1 según si a es positivo o negativo. Eso es lo que dice el Teorema Fundamental adaptado al conjunto de los números enteros. 52 4. EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA Teorema 4.6. (Teorema Fundamental de la Aritmética en enteros) Sea a un entero tal que |a| > 1. Entonces existe una sucesión finita {p1 , p2 , . . . , pn } de primos positivos, y un entero s ∈ {−1, 1}, tales que a = sp1 p2 · · · pn con p1 ≤ p2 ≤ · · · ≤ pn . La descomposición de a es única, en el sentido de que si a = s′ p′1 p′2 · · · p′m con s′ ∈ {−1, 1} y p′1 , p′2 , . . . , p′m primos positivos tales que p′1 ≤ p′2 ≤ · · · ≤ p′m , entonces m = n, s′ = s, p′1 = p1 , p′2 = p2 , . . ., p′n = pn . Demostración. Del teorema 4.4, tenemos que |a| admite una única descomposición de la forma |a| = p1 p2 · · · pn con p1 , p2 , . . . , pn primos positivos y p1 ≤ p2 ≤ · · · ≤ pn . Por lo tanto, o bien es a = p1 p2 · · · pn o bien es a = (−1) p1 p2 · · · pn , es decir, a = sp1 p2 · · · pn para un único s ∈ {−1, 1} y una única sucesión finita de primos naturales p1 , p2 , . . . , pn con p1 ≤ p2 ≤ · · · ≤ pn . 2. Algunas consecuencias del Teorema Fundamental 2.1. Divisibilidad a partir de la factorización. Cuando dos números naturales están expresados en su forma canónica pero con la posibilidad de que los exponentes sean 0, es muy fácil determinar si uno de ellos divide al otro. Teorema 4.7. Sean a y b dos naturales positivos cuyas factorizaciones en primos sean a b = = αn 1 α2 pα 1 p 2 · · · pn , pβ1 1 pβ2 2 · · · pβnn , α1 , . . . , αn ∈ N β1 , . . . , βn ∈ N con p1 , . . . , pn primos, 0 < p1 < · · · < pn . Se tiene que a divide a b si, y sólo si, αi ≤ βi para todo i ∈ {1, . . . , n}. Demostración. Supongamos que a | b. Entonces existe c ∈ N tal que ac = b. Todo factor primo de c es también factor primo de b, por lo que podemos escribir c = pγ11 pγ22 · · · pγnn con γi ∈ N para i = 1, . . . , n. Obsérvese que ac = p1α1 +γ1 p2α2 +γ2 · · · pnαn +γn . Siendo iguales los números ac y b, por el Teorema Fundamental, es αi + γi = βi para todo i ∈ {1, . . . , n}. De allí, se sigue que para todo 1 ≤ i ≤ n es αi ≤ βi . Para la vuelta, supongamos que para todo i ∈ {1, . . . , n} es αi ≤ βi . Esto quiere decir que para cada i ∈ {1, . . . , n} existe γi ∈ N tal que αi + γi = βi . Definamos c = pγ11 · · · pγnn , resultando c un número natural que α1 +γ1 γ1 γn αn 1 n +γn = pβ1 1 · · · pβnn = b. De aquí se deduce que a | b. · · · pα satisface ac = (pα n 1 · · · pn ) (p1 · · · pn ) = p1 Como ejemplo de aplicación de este criterio de divisibilidad, deduzcamos el siguiente resultado. Proposición 4.8. Sean a y b números naturales. Se tiene que a | b si, y sólo si, a2 | b2 . Demostración. La proposición resulta obvia si b = 0, de modo que supongamos b 6= 0 (y, en ese caso, tanto a como b son naturales positivos). Para la ida, supongamos que a | b. Entonces existe c ∈ N tal que b = ac. Luego, b2 = c2 a2 con c2 ∈ N. Por lo tanto, a2 | b2 . β1 βn αn 1 Para la vuelta, supongamos que a2 | b2 . Sean pα 1 · · · pn y p1 · · · pn las factorizaciones en primos de a y b respectivamente, con α1 , . . . , αn , β1 , . . . , βn ∈ N y 0 < p1 < · · · < pn . Entonces, las factorizaciones respectivas 1 2 2 1 n n · · · p2β y b2 = p2β · · · p2α de a2 y b2 son p2α n . Ya que a | b , del teorema 4.7, tenemos que para cualquier n 1 1 i ∈ {1, . . . , n} es 2αi ≤ 2βi , es decir, αi ≤ βi . Luego, nuevamente por el teorema 4.7, se tiene que a | b. 2.2. M. C. D. y M. C. M. a partir de la factorización. La factorización canónica (con exponentes pudiendo valer 0) de dos números también permite el cálculo casi inmediato de su máximo común divisor y mínimo común múltiplo. Teorema 4.9. Sean a y b dos naturales positivos cuyas factorizaciones en primos sean a b = = αn 1 α2 pα 1 p 2 · · · pn , pβ1 1 pβ2 2 · · · pβnn , con p1 , . . . , pn primos, 0 < p1 < · · · < pn . Se tiene que α1 , . . . , αn ∈ N β1 , . . . , βn ∈ N mı́n(α1 ,β1 ) mı́n(α2 ,β2 ) p2 mcd (a, b) = p1 y que · · · pnmı́n(αn ,βn ) máx(α1 ,β1 ) máx(α2 ,β2 ) p2 mcm (a, b) = p1 · · · pnmáx(αn ,βn ) Demostración. Hagamos d = pγ11 pγ22 · · · pγnn con γi = mı́n (αi , βi ) para 1 ≤ i ≤ n. Se tiene que d es un número positivo, pues es un producto de números naturales. Ya que γi ≤ αi y γi ≤ βi para 1 ≤ i ≤ n, se tiene que d | a y d | b (teorema 4.7). Sea k cualquier divisor común de a y b. Como los factores primos de k también lo son de a y de b, debe ser k = pδ11 pδ22 · · · pδnn con δi ∈ N para cada i ∈ {1, . . . , n}. Como k | a y k | b debe ser, para 1 ≤ i ≤ n, δi ≤ αi y δi ≤ βi , es decir, δi ≤ mı́n (αi , βi ). Entonces, por teorema 4.7, k | d. Ya que d es un divisor común positivo de a y b divisible por cualquier divisor común de a y b, se sigue que d = mcd (a, b) (teorema 3.13). 2. ALGUNAS CONSECUENCIAS DEL TEOREMA FUNDAMENTAL 53 Para lo referente a mcm (a, b), observemos que máx (αi , βi ) + mı́n (αi , βi ) = αi + βi , así que máx (αi , βi ) = αi + βi − mı́n (αi , βi ). Por lo tanto, por teorema 3.37, es β1 β2 βn αn 1 α2 (pα 1 p 2 · · · pn ) p 1 p 2 · · · pn ab = mı́n(α ,β ) mı́n(α ,β ) mcm (a, b) = mı́n(αn ,βn ) 1 1 2 2 mcd (a, b) p p · · · pn = = según queríamos demostrar. 1 2 α1 +β1 −mı́n(α1 ,β1 ) α2 +β2 −mı́n(α2 ,β2 ) n +βn −mı́n(αn ,βn ) p1 p2 · · · pα n máx(α1 ,β1 ) máx(α2 ,β2 ) p1 p2 · · · pnmáx(αn ,βn ) 2.3. Cantidad de divisores. Dado un número natural, ¿cuántos divisores naturales tiene? El 0, infinitos. El 1, uno solo: el propio 1. ¿Y los otros números naturales? El Teorema Fundamental nos da las heαn 1 α2 rramientas apropiadas para saberlo. Dado a > 1, su factorización canónica puede escribirse pα 1 p2 · · · pn con + p1 < p2 < · · · < pn primos y α1 , . . . , αn ∈ Z . Del teorema 4.7, sabemos que cualquier factor de a tiene la forma pδ11 pδ22 · · · pδnn con δ1 , . . . , δn ∈ N, δ1 ≤ α1 , . . . , δn ≤ αn . Por lo tanto, para contar la cantidad de divisores que tiene a, debemos contar de cuántas maneras distintas podemos seleccionar δ1 , δ2 , . . . , δn de modo de tener δi ≤ αi para cada i ∈ {1, . . . , n}. Es obvio que para seleccionar δi tenemos αi + 1 posibilidades: 0, 1, . . . , αi . De este modo, por el Principio Fundamental del Conteo, la selección de δ1 , δ2 , . . . , δn puede hacerse de (α1 + 1) (α2 + 1) · · · (αn + 1) maneras distintas. Hemos demostrado entonces el siguiente resultado. αn 1 α2 Proposición 4.10. Sea a = pα 1 p2 · · · pn con p1 < p2 < · · · < pn números naturales primos y α1 , α2 , . . ., + αn ∈ Z . Entonces, a posee exactamente (α1 + 1) (α2 + 1) · · · (αn + 1) divisores naturales. Por ejemplo, 24 = 23 · 31 , de modo que 24 posee exactamente (3 + 1) (1 + 1) = 8 divisores naturales (y efectivamente los divisores de 24 son 1, 2, 3, 4, 6, 8, 12 y 24). Debe notarse que, aún cuando permitiésemos que algunos exponentes de los primos en la factorización de a sean 0, la situación no cambia, pues si algún αi vale 0, el correspondiente factor αi + 1 es 1, y no cambia la cantidad calculada de divisores. Por ejemplo, aún escribiendo 24 = 23 · 31 · 110 · 230 , la cantidad de divisores naturales de 24 es (3 + 1) (1 + 1) (0 + 1) (0 + 1), es decir, sigue siendo 8. 2.4. Raíces de números primos. Dado un primo p ∈ N, nos preguntamos por la naturaleza de las raíces cuadradas de p. ¿Serán números naturales? Obviamente que no, pues si fuese a2 = p para algún natural a, siendo p primo, debe ser a > 1, y entonces a sería un factor propio de p, contradiciendo que p es primo. O sea que las raíces cuadradas de un primo no pueden ser números naturales. Por un argumento similar, vemos √ que n p no puede ser natural si p es primo, cualquiera sea n ≥ 2. √ ¿Podrá ser n p un número racional? Es decir, ¿existen números racionales cuya n-ésima potencia sea igual a p? El Teorema Fundamental, a través de la factorización, nos da la pista para averiguarlo. Sea r un número racional. Como tal, puede expresarse como r = m/q, con m ∈ Z, q ∈ Z+ y, sin pérdida de αk 1 α2 generalidad, podemos suponer mcd (m, q) = 1. Supongamos que la factorización canónica de m es pα 1 p 2 · · · pk β con p1 < p2 < · · · < pk primos y α1 , . . . , αk ∈ Z+ , y que la de q es q1β1 q2β2 · · · qj j con q1 < q2 < · · · < qj primos + y β1 , . . . , βj ∈ Z . Del hecho que m y q son coprimos, se sigue que ninguno de los primos que aparece en la factorización de q aparece en la de m, y viceversa. Es decir, ∀t ∈ {1, . . . , k} , ∀i ∈ {1, . . . , j} , pt 6= qi Supongamos que r es una raíz n-ésima de p, es decir, r cumple que rn = p. Debe ser entonces mn = pq n , es nβ k 1 nα2 = pq1nβ1 q2nβ2 · · · qj j . Como a la derecha aparece el primo p (con exponente mayor que p2 · · · pnα decir, pnα 1 k 0), por el Teorema Fundamental, debe existir t ∈ {1, . . . , k} tal que pt = p, y por lo tanto la multiplicidad de p en mn es nαt . Ya que pt 6= qi para 1 ≤ i ≤ j, se sigue que la multiplicidad de p en el número pq n es 1. Entonces, para tener mn = pq n , debe ser nαt = 1. Esto es imposible si n ≥ 2, pues es αt ≥ 1. Hemos demostrado, por lo tanto, que la raíz n-ésima de un número primo no puede ser un número racional, si n ≥ 2. En consecuencia, para n ≥ 2, las raíces n-ésimas reales de un número primo siempre son números irracionales. 2.5. Raíces de polinomios a coeficientes enteros. Generalizamos ahora la discusión de la sección previa. Dada la ecuación (*) xn + an−1 xn−1 + an−2 xn−2 + · · · + a2 x2 + a1 x + a0 = 0 en la variable x, con a0 , a1 , . . . , an−1 ∈ Z y n ≥ 1, ¿qué tipo de soluciones admite? Vamos a demostrar que todas las soluciones racionales de la ecuación son necesariamente enteras. Supongamos que r es un número racional que es solución de la ecuación. Entonces podemos suponer que r = m/q con m ∈ Z, q ∈ Z+ y mcd (m, q) = 1. Reemplazando a r en la ecuación, resulta mn mn−1 mn−2 m2 m + an−1 n−1 + an−2 n−2 + · · · + a2 2 + a1 + a0 = 0 n q q q q q 54 4. EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA Multiplicando a ambos miembros por q n , y despejando, queda es decir, mn = −an−1 qmn−1 − an−2 q 2 mn−2 − · · · − a2 q n−2 m2 − a1 q n−1 m − a0 q n mn = q −an−1 mn−1 − an−2 qmn−2 − · · · − a2 q n−3 m2 − a1 q n−2 m − a0 q n−1 por lo que q es un factor de mn , y entonces mcd (mn , q) = q. Pero además, ya que q es coprimo con m, se tiene que mcd (mn , q) = 1 (lo cual puede verse por inducción sobre n, teniendo presente el teorema 3.21). Luego, deducimos que q = 1, y entonces r = m ∈ Z. Concluimos entonces que las soluciones reales de la ecuación (*) son o bien enteras, o bien irracionales. Esto nos da otra justificación para afirmar que las raíces reales de un número primo siempre son irracionales: ya sabemos que, como soluciones de la ecuación xn = p, son o bien enteras o bien irracionales. Pero también sabemos que no pueden ser enteras, pues en ese caso p tendría factores propios, en contra de la definición de número primo. Por lo tanto, las raíces n-ésimas reales de cualquier número primo siempre son números irracionales. La ecuación xn + an−1 xn−1 + an−2 xn−2 + · · · + a2 x2 + a1 x + a0 = 0 es un caso particular de la siguiente: an xn + an−1 xn−1 + an−2 xn−2 + · · · + a2 x2 + a1 x + a0 = 0 con n ≥ 1, a0 , . . . , an ∈ Z, an 6= 0. La generalización consiste en que el coeficiente que acompaña a xn no es ya necesariamente 1. Procediendo como arriba, buscamos soluciones de la forma m/q con m y q coprimos. Operando de manera análoga, llegamos a que an mn = q −an−1 mn−1 − an−2 qmn−2 − · · · − a2 q n−3 m2 − a1 q n−2 m − a0 q n−1 Vemos que q | an mn , y como q es coprimo con mn se sigue que q debe ser un factor de an . Por otro lado, siendo an = tq para algún entero t, se llega a que tmn = −an−1 mn−1 − an−2 qmn−2 − · · · − a2 q n−3 m2 − a1 q n−2 m − a0 q n−1 de donde se ve que o bien es m = 0 (únicamente en el caso en que a0 = 0), o bien m es un factor de −an−1 mn−1 − an−2 qmn−2 − · · · − a2 q n−3 m2 − a1 q n−2 m − a0 q n−1 . Pero de aquí, por aplicación de la proposición 2.27, vemos que m debe dividir a a0 q n−1 . Y como m es coprimo con q n−1 se sigue que m debe dividir a a0 . Hemos demostrado un conocido criterio para buscar las raíces racionales de un polinomio a coeficientes enteros, que resumimos a continuación. Teorema 4.11. Considérese la ecuación an xn + an−1 xn−1 + an−2 xn−2 + · · · + a2 x2 + a1 x + a0 = 0 con n ≥ 1, a0 , . . . , an ∈ Z, an 6= 0. Los únicos racionales que pueden satisfacerla son el 0 y los de la forma m/q, con m ∈ Z − {0}, q ∈ Z+ , m factor de a0 y q factor de an . Debe notarse que el teorema precedente da condiciones necesarias, pero no suficientes, para que un número racional sea solución de la ecuación. Es decir, sólo proporciona un criterio para obtener racionales candidatos a solución de la ecuación. Ejemplo 4.12. Encontrar las raíces racionales de la ecuación 2x3 − 3x + 9 = 0. En este caso, es n = 3, a3 = 2 y a0 = 9. El 0 no es solución, pues a0 6= 0, así que busquemos soluciones no nulas. Los factores positivos de a3 son 1 y 2. Los de a0 son 1, −1, 3, −3, 9, −9. Los racionales de la forma m/q con m factor de a0 y q factor positivo de a3 son 1 1 3 3 9 9 1, −1, 3, −3, 9, −9, , − , , − , , − 2 2 2 2 2 2 y son los únicos racionales que pueden ser solución de la ecuación. Por verificación directa de cada uno de ellos, se comprueba que ninguno de esos valores la satisface. Concluimos entonces que la ecuación 2x3 − 3x + 9 = 0 no tiene raíces racionales. 3. Ternas pitagóricas Consideremos el problema de encontrar x, y, z naturales tales que x2 + y 2 = z 2 . De la sola observación de la ecuación, encontramos un montón de soluciones: x = a, y = 0, z = a (siendo a cualquier natural) y x = 0, y = a, z = a (a ∈ N). En todas ellas, al menos un valor es 0, y llamaremos triviales a tales soluciones. Una solución no trivial es, por ejemplo, x = 15, y = 8, z = 17, y nos interesa encontrar, de manera sistemática, todas las soluciones no triviales de la ecuación. Por su relación con el ultrafamoso Teorema de Pitágoras, la ecuación x2 + y 2 = z 2 se denomina ecuación pitagórica, y se trata de una ecuación diofantina no lineal. Una terna (x, y, z) de números naturales positivos que cumplen la ecuación se denomina una terna pitagórica, pues existe un triángulo rectángulo cuyos catetos miden x e y, y cuya hipotenusa mide z. Las ternas pitagóricas son entonces las soluciones no triviales de la ecuación pitagórica. 3. TERNAS PITAGÓRICAS 55 Algunos ejemplos de ternas pitagóricas: (3, 4, 5), (4, 3, 5), (15, 8, 17), (30, 16, 34). Las dos primeras nos inducen a pensar que x e y pueden intercambiarse, y efectivamente así ocurre: si (x, y, z) es terna pitagórica, entonces (y, x, z) también lo es. De la observación de los dos últimos ejemplos, surge una primera observación interesante. Proposición 4.13. Si (x, y, z) es una terna pitagórica y k es un natural positivo, entonces (kx, ky, kz) es también una terna pitagórica. 2 2 Demostración. Por ser x, y, z y k todos positivos, también lo son kx, ky y kz. Además, (kx) + (ky) = 2 2 2 k x + k 2 y 2 = k 2 x2 + y 2 = k 2 z 2 = (kz) . En lo sucesivo, será muy útil conocer la estrecha vinculación que existe entre los divisores de las componentes de una terna pitagórica. Proposición 4.14. Sea (x, y, z) una terna pitagórica. Se tiene que mcd (x, y) = mcd (x, z) = mcd (y, z) = mcd (x, y, z) Demostración. Designemos por g a mcd (x, y). Como g | x y g | y, se tiene que g 2 | x2 y g 2 | y 2 , y entonces g 2 | x2 + y 2 . Es decir, g 2 | z 2 . Pero entonces g | z (proposición 4.8). Por lo tanto, mcd (x, y, z) = mcd (mcd (x, y) , z) = mcd (g, z) = g. Es obvio que g es un entero positivo que es un divisor común de x y z. Si t | x y t | z, tenemos que t2 | x2 y 2 t | z 2 , por lo que t2 | z 2 − x2 , es decir, t2 | y 2 , y entonces t | y. Ya que t | x y t | y, tenemos que t | mcd (x, y), vale decir, t es un factor de g. Por el teorema 3.13, es mcd (x, z) = g. De manera enteramente análoga, se deduce que mcd (y, z) = g. Supongamos que (x, y, z) sea una terna pitagórica, con g = mcd (x, y). Hagamos x′ = x/g, y ′ = y/g y z = z/g. De la proposición anterior y del corolario 3.19, tenemos que x′ , y ′ y z ′ son coprimos de a pares, y (x′ , y ′ , z ′ ) es una terna pitagórica: 2 2 2 x2 + y 2 y z x 2 ′ 2 ′ 2 + = = (z ′ ) = (x ) + (y ) = g g g2 g Es decir, por cada terna pitagórica podemos conseguir una terna pitagórica en la que los naturales involucrados son coprimos de a pares (que, en virtud de la proposición 4.14, es equivalente a decir que son coprimos). Tales ternas se denominan ternas pitagóricas primitivas, y, por lo dicho hasta ahora, para estudiar todas las soluciones en N3 de la ecuación x2 + y 2 = z 2 , alcanza con estudiar las ternas primitivas que son solución de la ecuación, pues toda terna pitagórica es o bien primitiva o bien de la forma (kx, ky, kz) con k ∈ Z+ y (x, y, z) terna pitagórica primitiva. Entonces, tratemos ahora de deducir condiciones necesarias y suficientes para x, y y z de modo que (x, y, z) sea terna pitagórica primitiva. Vamos primero por la obtención de condiciones necesarias. La más evidente de todas ellas proviene de la definición misma, y es que x, y y z sean coprimos de a pares. Eso obliga a que x e y no sean ambos pares. ¿Pueden ser ambos impares? ′ Lema 4.15. Sea z un número natural. Entonces, el resto de dividir z 2 entre 4 es o bien 0 o bien 1. Demostración. Por el teorema de la división, existen naturales k y r tales que z = 2k + r con 0 ≤ r < 2 (es decir, r = 0 o r = 1). Por lo tanto, es z 2 = 4k 2 + 4kr + r2 = 4 k 2 + kr + r2 . Hagamos c = k 2 + kr, y notemos que, ya que r = 0 o r = 1, es r2 = 0 o r2 = 1. Luego, z 2 = 4c + r2 con 0 ≤ r2 < 4, es decir, ésta es la 2 2 2 ecuación de la división entre z y 4; en particular, r z , 4 = r ∈ {0, 1}, como se quería probar. Lema 4.16. Si (x, y, z) es una terna pitagórica primitiva, entonces no puede ser que x e y sean ambos impares. Demostración. Demostremos la contrarrecíproca. Supongamos que x = 2k + 1 e y = 2n + 1, con k, n ∈ N. Se tiene que x2 + y 2 = 4k 2 + 4k + 1 + 4n2 + 4n + 1 = 4 k 2 + k + n2 + n + 2. Haciendo c = k 2 + k + n2 + n ∈ N, se tiene que x2 + y 2 = 4c + 2, y entonces el resto de dividir x2 + y 2 entre 4 es 2. Luego, por el lema 4.15, x2 + y 2 no puede ser el cuadrado de un número natural. De allí que x2 + y 2 6= z 2 , y entonces (x, y, z) no es terna pitagórica. Entonces, en cualquier terna pitagórica primitiva (x, y, z), x e y son de paridad opuesta, es decir, uno es par, y el otro impar. A los fines de las deducciones que siguen, supondremos que x es el impar e y el par (las ternas en las que x es par e y impar se obtienen por intercambio). Dado que elevar al cuadrado no altera la paridad de un número, y que la suma de dos números de paridad opuesta es un impar, será entonces x2 impar, y 2 par y z 2 impar. Por lo tanto, z es impar. Observemos que, dado que y 2 = z 2 − x2 , se tiene que y 2 z−xz+x = 2 2 2 56 4. EL TEOREMA FUNDAMENTAL DE LA ARITMÉTICA z+x z+x divide a z−x Nótese que mcd z−x 2 , 2 2 y a 2 y por tanto a cualquier combinación lineal a coeficientes z+x z−x z+x z−x z+x | z. Análogamente, enteros de z−x 2 y 2 , en particular a 2 + 2 , que es igual a z. Es decir, mcd 2 , 2 z−x z+x z−x z−x z+x z+x mcd 2 , 2 | x pues x = 2 − 2 . Entonces, mcd , | mcd (x, z). Como estamos suponiendo que 2 2 z+x z+x z−x , y son coprimos. Pero su producto es = 1, es decir, x y z son coprimos, se tiene que mcd z−x 2 2 2 2 2 z−x 2 2 (y/2) , es decir, el cuadrado de un natural, por lo que, por proposición 4.5, debe ser 2 = s y z+x 2 = r para 2 2 ciertos r y s naturales positivos. Debe ser r > s (pues z + x > z − x). Ya que r y s son coprimos, se tiene que r y s son coprimos (pues si r y s no fuesen coprimos, tendrían un factor común t ≥ 2, y entonces t2 sería un factor común de r2 y s2 , por lo que éstos no serían coprimos). Además, r2 + s2 = z, r2 − s2 = x y 2rs = y. Y ya que z es impar, no pueden ser r y s ambos pares (pues r2 + s2 sería par) ni ambos impares (por la misma razón). Entonces r y s son de paridad opuesta. En síntesis, si (x, y, z) es terna pitagórica primitiva con x impar, existen r, s ∈ N tales que r > s > 0, mcd (r, s) = 1, r y s son de paridad opuesta, x = r2 − s2 , y = 2rs y z = r2 + s2 . Resulta que la recíproca de esto es también cierta, y tenemos entonces el siguiente resultado. Teorema 4.17. (Kronecker) (x, y, z) es una terna pitagórica primitiva con x impar si, y sólo si, existen r, s ∈ N tales que r > s > 0, mcd (r, s) = 1, r y s son de paridad opuesta, x = r2 − s2 , y = 2rs y z = r2 + s2 . Demostración. La ida ha sido ya demostrada en los párrafos precedentes. Para la vuelta, supongamos que r y s son naturales que satisfacen: r > s > 0. mcd (r, s) = 1. r y s tienen paridad opuesta Supongamos además que es x = r2 − s2 , y = 2rs y z = r2 + s2 , y veamos que (x, y, z) resulta una terna pitagórica primitiva en donde x es impar. Por un lado, 2 2 2 x2 + y 2 = r2 − s2 + (2rs) = r4 − 2r2 s2 + s4 + 4r2 s2 = r4 + 2r2 s2 + s4 = r2 + s2 = z 2 mostrando que (x, y, z) es una terna pitagórica. Por otro lado, como r y s son de paridad opuesta, también lo son r2 y s2 , de donde surge que x es impar. Falta ver que x, y y z son coprimos de a pares. Comencemos viendo que x e y son coprimos, teniendo en cuenta el corolario 3.9 y el teorema 3.21: Dado que r y s son coprimos, 1 = mcd (r, s) = mcd (r − s, s) y 1 = mcd (r, s) = mcd (r + s, s). Luego, mcd ((r − s) (r + s) , s) = 1, es decir, mcd (x, s) = 1. De manera similar, tenemos que mcd (r, r − s) = mcd (r, −s) = mcd (r, s) = 1 y mcd (r, s + r) = mcd (r, s) = 1, por lo que mcd (r, (r − s) (s + r)) = 1, es decir, mcd (r, x) = 1. Como x es coprimo con r y con s, es mcd (x, rs) = 1. Y como x es impar, es mcd (x, 2) = 1. Por lo tanto, mcd (x, 2rs) = 1, es decir, x e y son coprimos. Finalmente, ya que (x, y, z) es terna pitagórica, por proposición 4.14, se tiene que mcd (x, z) = mcd (y, z) = mcd (x, y) = 1. Entonces, x, y y z son coprimos de a pares, y, en consecuencia, (x, y, z) es terna pitagórica primitiva con x impar. Capítulo 5 CONGRUENCIAS En este último capítulo del curso abordaremos el estudio de las congruencias, una poderosa herramienta en Teoría de Números desarrollada desde el siglo XIX por Gauss, y continuada hasta nuestros días por numerosos investigadores de la Matemática, y también de otras ramas científicas, particularmente Ciencias de la Computación, para mencionar una. Esto se explica ya que, por ejemplo, las congruencias son fundamentales en la Criptografía, la ciencia de las comunicaciones en secreto. Las propiedades matemáticas de las congruencias permiten hacer con un altísimo grado de seguridad la codificación de mensajes (es decir, la transformación de un texto legible en uno sin sentido aparente) de modo tal que puedan ser decodificados (o sea, recuperados en su formato legible original a partir del texto aparentemente ininteligible) sólo por quien esté autorizado a hacerlo; y los fundamentos matemáticos de las congruencias son, entre otros, los que permiten garantizar el alto grado de confianza que se tiene en que el desciframiento es virtualmente imposible para un intruso (hacker, como le llamamos hoy). Pero resulta que no sólo esos investigadores hacen congruencias. Nosotros, los mortales comunes y corrientes, también las hacemos en muchas situaciones de la vida cotidiana que se presentan con frecuencia y que manejamos con absoluta naturalidad. El objetivo de este capítulo es ejemplificar situaciones de ese estilo, reconocer que hay un patrón de comportamiento común en ellas, formularlas desde un punto de vista matemático, y estudiar propiedades sobre ellas, de manera de contar con una herramienta sistemática para comprenderlas (precisamente de eso se trata la Matemática...). 1. Congruencia módulo m Parada en Caseros esquina Alberdi, en su diario paseo céntrico, Liliana mira hacia el Cerro San Bernardo, contemplando su belleza. Sin desplazarse de su lugar, gira hacia su izquierda un ángulo de 180◦ , lo que le da la oportunidad de admirar la imponente Precordillera con algo de nieve; acto seguido, decide girar, también sin desplazarse y hacia la izquierda, otros 90◦ , lo que le permite ver la muchedumbre que colma la Peatonal Alberdi y, finalmente, continúa girando en el mismo sentido 180◦ más, para quedar apuntando en dirección de la renovada Galería del Turista con sus vistosos colores. En su recorrido para obtener un panorama completo de lo que ocurre a su alrededor (para chusmear, diríamos en salteño básico), Liliana ha totalizado un giro de 450◦ . El San Bernardo ha quedado a su derecha. Piensa entonces, y con justa razón, que, desde el punto de vista de la dirección a la que queda apuntando, hubiese sido lo mismo haber girado desde su postura inicial (mirando el cerro) hacia su izquierda un ángulo de 90◦ . Es decir, hay un punto de vista desde el cual 90 representa lo mismo que 450 (obviamente, desde el punto de vista de los paisajes que pudo apreciar, no son lo mismo; tampoco son lo mismo desde el punto de vista del mareo que le quedó luego de girar). Pero desde ese punto de vista (la dirección en que quedó apuntando), 90 y 450 son coincidentes, o, para emplear sinónimos, concordantes o congruentes. Del mismo modo, el número 810 representa la misma dirección. En general, como sabemos que una vuelta completa representa 360◦ , girar un ángulo α de más de 360◦ es lo mismo que girar un ángulo igual al resto de la división de α por 360, pues cada 360◦ constituyen una vuelta entera, y significan quedar mirando en la dirección original, de modo que la dirección final coincide con el resto de dividir el ángulo total girado entre 360. Observemos, en una recta numérica, los valores 90, 450 y 810: En el dibujo hemos marcado también los números que corresponden a vueltas completas (0, 360, 720, etc.) y vemos que los números 90, 450 y 810 distan de los correspondientes a la mayor vuelta completa superada una misma cantidad (90), y es éso precisamente lo que los hace equivalentes (o congruentes) desde el punto de vista de la dirección final. Resumamos la situación: suponiendo que se giran ángulos en una cantidad entera de grados, hay 360 posiciones posibles, cada una de las cuales representa una infinidad de posibles giros (números enteros), y la manera de encontrar con qué posición se corresponde cada número es tomar el resto de la división del número por 360. 57 58 5. CONGRUENCIAS Veamos otro ejemplo de la vida cotidiana en el que también sólo interesan los restos de una división: hasta hace unos años, los cuentakilómetros de los autos tenían cinco rueditas para indicar el kilometraje recorrido. Recién salido el auto de la fábrica, el cuentakilómetros marcaba 00000; luego de que el auto recorrió 10 km., marcaba 00010. A los 99.999 km. marcaba 99999, y a los 100.000 km. marcaba 00000 (¡pero no significaba que el dueño tenía de nuevo un cero kilómetro!). A los 100.010 km. volvía a marcar 00010, y a los 200.010 km. también. En general, tal cuentakilómetros no muestra necesariamente el kilometraje real, sino el resto de dividir el mismo por 100.000. Los números 10 y 200.010 son equivalentes desde el punto de vista del cuentakilómetros (y seguramente no desde el punto de vista del estado del automóvil). O sea que si alguien ve que el aparato marca 00010, con esa sola información no puede saber si el auto lleva recorridos 10, 100.010, o 200.010 km. (o cualquier otro número que sea 10 unidades mayor que un múltiplo de 100.000). Situaciones de este tipo, en que sólo interesa el resto de una división, ocurren tan a menudo que a veces ni nos damos cuenta de que estamos en una de ellas, y de que estamos usando matemática para manejarla. Por ejemplo, si hoy es jueves, y nos preguntamos por el día de la semana que será dentro de 22 días, difícilmente optemos por contar los días uno a uno (hoy jueves, mañana viernes, pasado sábado...). Más bien, resolvemos la situación notando que cada 7 días volveremos a estar en jueves, por lo que en 21 días será también jueves, de modo que en 22 días estaremos en un viernes. Es decir, basta calcular el resto de la división de 22 por 7 (que será un número entre 0 y 6) y ver qué día de la semana será dentro de esa cantidad de días. Los matemáticos, conscientes de lo común de la situación, la han generalizado de la siguiente manera. Definición 5.1. Sea m un número entero positivo. Dos números enteros a y b se dicen congruentes módulo m si el resto de dividir a por m es el mismo que el de dividir b por m. El número m se llama módulo de la congruencia. El hecho de que dos enteros a y b sean congruentes módulo m se denota de varias maneras, según el gusto de cada autor: a ≡ b (mod m) a ≡ b (m) a ≡m b Por razones de comodidad y precisión, nosotros emplearemos la de la derecha (la de la izquierda exige escribir mucho, y la del medio puede crear alguna confusión con la operación de producto de números). Cuando dos números a y b no son congruentes módulo m, escribimos a 6≡m b, y diremos que a y b son incongruentes módulo m. El símbolo de congruencia (≡) tiene un parecido tipográfico con el símbolo standard de la igualdad (=), y más adelante veremos que el parecido no es sólo en la forma sino en la funcionalidad (bajo varios aspectos matemáticos, la igualdad y la congruencia se comportan de la misma forma, aunque también veremos ciertas diferencias). Gauss fue el primero en darse cuenta de ello, y por eso propuso el uso de ≡ para simbolizar a las congruencias. Nuestros ejemplos de más arriba nos hacen ver que nuestro sistema de medición de ángulos está gobernado por la congruencia módulo 360, el cuentakilómetros del auto por la congruencia módulo 100.000, y los días de la semana en un almanaque por la congruencia módulo 7. Para citar más ejemplos, el reloj es un dispositivo que obedece a congruencia módulo 24 para las horas del día, y módulo 60 para los minutos y segundos. El almanaque también responde a la congruencia módulo 12 para los meses del año. Las congruencias están alrededor nuestro más de lo que imaginamos... De acuerdo a la definición y a los ejemplos, tenemos que 90 ≡360 450, 90 ≡360 810, 90 6≡360 45, 22 ≡7 1, 10 ≡100.000 100.010, 810 ≡360 −270. ¡Momentito! Esta última nos parece, cuando menos, sospechosa. Sin embargo, notemos que nuestra definición de congruencia permite que a y b sean enteros, así que al menos tiene sentido preguntarse si 810 ≡360 −270. Podemos respondernos sin problemas, ya que sabemos dividir números enteros. Y efectivamente r (810, 360) = 90 = r (−270, 360), así que 810 ≡360 −270. Esto tiene además una interpretación física en el caso de la Liliana girando por el centro: los números positivos representan giros en sentido antihorario, y los negativos, giros en sentido contrario. O, en el caso de los días de la semana, los números positivos representan días hacia el futuro, y los negativos, días hacia el pasado: si hoy es jueves, ¿qué día de la semana fue hace 22 días? Como −22 ≡7 6, la respuesta es la misma que la de la pregunta “¿Qué día cae dentro de 6 días?” o también “¿Qué día de la semana fue ayer?” (pues −22 ≡7 −1); la respuesta a las tres preguntas es “miércoles”. 2. Propiedades generales de las congruencias A primera vista, puede resultar un poco molesto tener que andar haciendo tantas divisiones por m para saber si dos números son congruentes módulo m. Afortunadamente, hay una manera equivalente de saberlo, generalmente más fácil de verificar que ir por la definición, y la enunciamos a continuación. Proposición 5.2. Sean a y b enteros, y m un entero positivo. Se tiene que a ≡m b ⇐⇒ m | (a − b) 2. PROPIEDADES GENERALES DE LAS CONGRUENCIAS 59 Demostración. Supongamos primero que a ≡m b. Del Teorema de la División, existen c1 , c2 , r1 , r2 ∈ Z tales que a = c1 m + r1 y b = c2 m + r2 con 0 ≤ r1 < m y 0 ≤ r2 < m. Restando miembro a miembro las dos ecuaciones de división, tenemos que a − b = (c1 − c2 ) m + (r1 − r2 ). Pero por ser a ≡m b, tenemos que r1 = r (a, m) = r (b, m) = r2 , por lo que r1 − r2 = 0, con lo cual a − b = (c1 − c2 ) m, mostrando que m | (a − b). Recíprocamente, supongamos que m | (a − b). Existe entonces k ∈ Z tal que a−b = km, es decir, a = b+km. Luego, r (a, m) = r (b + km, m) = r (r (b, m) + r (km, m) , m) = r (r (b, m) , m) = r (b, m) de donde se tiene que a ≡m b. Con este criterio, es fácil ver que 810 ≡360 −270, ya que 810 − (−270) = 1.080 = 3 · 360, es decir, 360 es un factor de 810 − (−270). La proposición de arriba puede expresarse fácilmente en castellano: dos números son congruentes módulo m si, y sólo si, su diferencia es un múltiplo de m (o, lo que es lo mismo, a es congruente módulo m con b si, y sólo si, a es igual a b más un múltiplo de m). En virtud de la equivalencia con la definición, muchos autores adoptan directamente como definición de congruencia módulo m el hecho de que la diferencia sea múltiplo de m, y están en su pleno derecho de hacerlo. Sin embargo, aquí hemos preferido la definición a través de los restos, por considerar que tiene un mayor grado de significación. Veamos a continuación algunas propiedades básicas de las congruencias. Las tres primeras establecen que la congruencia módulo m es una relación reflexiva, simétrica y transitiva en el conjunto de los números enteros. Proposición 5.3. ∀a ∈ Z, a ≡m a. Demostración. Para cualquier a ∈ Z, r (a, m) = r (a, m), por lo que a ≡m a. Proposición 5.4. ∀a, b ∈ Z, a ≡m b ⇔ b ≡m a. Demostración. a ≡m b ⇔ r (a, m) = r (b, m) ⇔ r (b, m) = r (a, m) ⇔ b ≡m a. Proposición 5.5. ∀a, b, c ∈ Z, (a ≡m b ∧ b ≡m c) ⇒ a ≡m c. Demostración. (a ≡m b ∧ b ≡m c) ⇒ (r (a, m) = r (b, m) ∧ r (b, m) = r (c, m)) ⇒ r (a, m) = r (c, m) ⇒ a ≡m c. Proposición 5.6. Sean a, b ∈ Z y m ∈ Z+ . Supongamos que k es un entero positivo que es factor de m, y que a ≡m b. Entonces, también se tiene que a ≡k b. Demostración. Si a ≡m b, entonces m | (a − b). Si k | m, por transitividad de la relación de divisibilidad, tenemos que k | (a − b), de donde a ≡k b. Proposición 5.7. Sean a, b ∈ Z y m, k ∈ Z+ . Se tiene que a ≡m b ⇔ ka ≡km kb. Demostración. a ≡m b ⇔ m | (a − b) ⇔ km | k (a − b) ⇔ km | (ka − kb) ⇔ ka ≡km kb. Dado cualquier m ∈ Z+ , por la definición de congruencia resulta obvio que si dos números son iguales, entonces son congruentes módulo m (es lo que dice la proposición 5.3). La recíproca no es cierta en general, pero sí en una circunstancia especial, según veremos a continuación. Proposición 5.8. Sea m ∈ Z+ , y sean a, b ∈ Z tales que 0 ≤ a < m y 0 ≤ b < m. Se tiene que a ≡m b ⇔ a = b. Demostración. Siendo a y b naturales menores que m, es r (a, m) = a y r (b, m) = b (proposición 2.17). De allí que si a ≡m b, entonces r (a, m) = r (b, m), y luego a = b. La implicación recíproca es directa de ver. La siguiente propiedad, vinculada al resultado que acabamos de ver, nos dice cuál es el más pequeño de los naturales que es congruente módulo m con un entero a dado. Proposición 5.9. Sean m ∈ Z+ y a ∈ Z. Entonces, r(a, m) es el único entero entre 0 y m − 1 que es congruente a a módulo m. Demostración. Por la proposición 2.17, r(a, m) = r r(a, m), m , por lo que a ≡m r(a, m). Para ver la unicidad, supongamos que a ≡m n para 0 ≤ n ≤ m − 1. Por la proposición 5.5, tenemos entonces que n ≡m r, y siendo ambos naturales menores que m, resulta n = r (proposición 5.8). En relación a la proposición anterior, muchos autores utilizan la expresión “x (mod m)” para hacer referencia al resto de la división de x por m. Algunos lenguajes de programación usan la función mod (x, m) para designar a tal resto. Definición 5.10. Un sistema completo de restos módulo m es un conjunto de enteros tal que cualquier entero es congruente módulo m a exactamente un elemento del conjunto. 60 5. CONGRUENCIAS De la proposición 5.9, deducimos que, dado m ∈ Z+ , el conjunto {0, 1, . . . , m − 1} es un sistema completo de restos módulo m. Otros ejemplos: 1. El conjunto {1, . . . , m − 1, m}. 2. El conjunto {0, m + 1, 2m + 2, . . . , (m − 1) m + (m − 1)} Y hay muchos más (de hecho, son infinitos). Todos ellos se caracterizan de acuerdo al siguiente resultado. Proposición 5.11. Sea M un subconjunto de números enteros. Se tiene que M es un sistema completo de restos módulo m si, y sólo si, M tiene exactamente m elementos que son dos a dos incongruentes módulo m. Demostración. Supongamos que M es un sistema completo de restos módulo m. Sean a y b elementos de M , con a 6= b. Como a ≡m a (proposición 5.3), debe ser b 6≡m a (pues, de lo contrario, el entero a sería congruente módulo m a dos elementos de M ). Si M tuviese más de m elementos, al menos dos de ellos tienen el mismo resto cuando se los divide por m (pues sólo hay m posibles restos de una división por m), y esos elementos serían congruentes módulo m, lo cual no puede ser, por nuestro resultado anterior. Si M tuviese menos que m elementos, por la unicidad del resto de la división, debería haber un x ∈ {0, . . . , m − 1} tal que ∀a ∈ M, r (a, m) 6= x. Luego, ningún número de M sería congruente a x módulo m, contradiciendo el hecho de que M es un sistema completo de restos módulo m. Luego, M posee exactamente m elementos. Para la vuelta, supongamos que M es un subconjunto de enteros que tiene exactamente m elementos que son dos a dos incongruentes módulo m. Esto quiere decir que, cuando se divide cada elemento de M por m, se obtienen todos los restos posibles, es decir, todos los números entre 0 y m − 1. Sea a ∈ Z. De la proposición 5.9, es a ≡m r (a, m). Y por lo que dijimos, existe un único x ∈ M tal que x ≡m r (a, m). Luego, a ≡m x para un único x ∈ M . De allí que M es un sistema completo de restos módulo m. Ejemplos de conjuntos que no son sistemas completos de restos módulo m: 1. El conjunto {1, . . . , m − 1}, porque tiene m − 1 elementos (obsérvese además que los múltiplos de m no son congruentes módulo m a ningún elemento del conjunto). 2. El conjunto {0, 1, . . . , m − 1, m}, porque tiene m + 1 elementos (notar que los múltiplos de m son congruentes a más de un elemento del conjunto, a saber, a 0 y a m). 2.1. Congruencias y operaciones aritméticas. Veremos ahora el comportamiento de las congruencias frente a distintas operaciones aritméticas. El primer resultado nos dice que se puede sumar, en ambos miembros de una congruencia, un mismo número, y la congruencia se sigue manteniendo, y que lo mismo vale para el producto. Lema 5.12. Sean a, b, c ∈ Z y m ∈ Z+ . Si a ≡m b, entonces a + c ≡m b + c y ac ≡m bc. Demostración. Por ser a ≡m b, tenemos que existe k ∈ Z tal que a − b = km (proposición 5.2). Por lo tanto, (a + c) − (b + c) = km y ac − bc = (kc) m. De aquí que, de nuevo por la proposición 5.2, es a + c ≡m b + c y ac ≡m bc. Ahora veamos que las congruencias módulo un mismo número pueden sumarse miembro a miembro, o multiplicarse miembro a miembro, sin alterar la congruencia. Lo haremos para el caso de dos congruencias, y una simple inducción permite extender el resultado al caso en que se tienen varias congruencias (recalquemos que todas deben ser módulo un mismo número). Teorema 5.13. Sean a, b, c, d ∈ Z y m ∈ Z+ . Si a ≡m b y c ≡m d, entonces a + c ≡m b + d y ac ≡m bd. Demostración. Por ser a ≡m b y c ≡m d, tenemos que a + c ≡m b + c y que b + c ≡m b + d (lema 5.12), y entonces, por la proposición 5.5, tenemos que a + c ≡m b + d. También del lema 5.12 es ac ≡m bc y bc ≡m bd, de donde ac ≡m bd. Corolario 5.14. Sean a, b ∈ Z y m ∈ Z+ . Si a ≡m b, entonces ∀n ∈ Z+ , an ≡m bn . Demostración. Por inducción sobre n. El caso n = 1 sale directamente de la hipótesis, así que veamos el paso inductivo. Supongamos que an ≡m bn . Como por hipótesis es a ≡m b, del teorema 5.13 tenemos que an a ≡m bn b, es decir, an+1 ≡m bn+1 . Corolario 5.15. Sean a, b, c0 , c1 , c2 , . . . , ck ∈ Z y m ∈ Z+ . Si a ≡m b, entonces c0 + c1 a + c2 a2 + · · · + c k a ≡ m c 0 + c 1 b + c 2 b2 + · · · + c k bk . k Demostración. Por inducción sobre k (la cantidad de sumandos). Para k = 0, debemos probar que c0 ≡m c0 , lo cual es cierto por la proposición 5.3. Ahora supongamos que c0 +c1 a+c2 a2 +· · ·+ck ak ≡m c0 +c1 b+ c2 b2 +· · ·+ck bk . Ya que a ≡m b, del lema 5.12 y el corolario 5.14, tenemos que ck+1 ak+1 ≡m ck+1 bk+1 , así que, por el teorema 5.13, concluimos que c0 +c1 a+c2 a2 +· · ·+ck ak +ck+1 ak+1 ≡m c0 +c1 b+c2 b2 +· · ·+ck bk +ck+1 bk+1 . 2. PROPIEDADES GENERALES DE LAS CONGRUENCIAS 61 Los resultados anteriores nos muestran que el parecido entre ≡ y = no es sólo tipográfico, sino también funcional: tanto las igualdades como las congruencias se preservan por suma o multiplicación de ambos miembros por un mismo número, suma o multiplicación miembro a miembro, o elevación miembro a miembro a cualquier potencia entera positiva. Incluso hemos visto indirectamente que, en una congruencia, podemos cancelar términos, así como podíamos hacerlo en las igualdades: a + c ≡m b + c ⇒ a + c + (−c) ≡m b + c + (−c) ⇒ a ≡m b. Sin embargo, hay algo que siempre podemos hacer en una igualdad, pero no siempre en una congruencia: cancelar factores no nulos. Por ejemplo, 4 · 5 ≡6 4 · 2 (pues 20 − 8 es múltiplo de 6), pero si cancelamos el factor 4 nos quedaría 5 ≡6 2, que evidentemente es falso ya que 5 − 2 no es múltiplo de 6. La división de congruencias miembro a miembro adolece del mismo tipo de dificultades: 8 ≡4 12 y 2 ≡4 6 pero (8/2) 6≡4 (12/6) pues 4 6≡4 2. ¿Qué es lo que está pasando como para impedirnos la ley cancelativa en el producto? Veamos. Supongamos que ka ≡m kb. Luego, m | k (a − b). Si quisiéramos probar que a ≡m b, deberíamos ver que m | a − b. Si k y m no son coprimos (que es lo que pasaba en nuestro ejemplo de más arriba), la divisibilidad de k (a − b) por m puede ser debida a la presencia del factor k, y no necesariamente deduciríamos que m | (a − b), con lo cual la conclusión de que a ≡m b podría ser errónea. Lo que sí podemos asegurar es el siguiente resultado, que nos dice que en la congruencia ka ≡m kb siempre podemos cancelar el factor k, a condición de que pasemos de una m . congruencia módulo m a una congruencia módulo mcd(k,m) Proposición 5.16. Sean k, a, b ∈ Z y m ∈ Z+ . Hagamos d = mcd (k, m). Si ka ≡m kb, entonces a ≡ md b. Demostración. Supongamos que ka ≡m kb. Existe t ∈ Z tal que k (a − b) = mt. Por lo tanto, kd (a − b) = k m m m m d t. Ya que d y d son coprimos (corolario 3.19), se sigue que d | (a − b) (teorema 3.20), y entonces a ≡ d b. Corolario 5.17. Sean k, a, b ∈ Z y m ∈ Z+ . Si ka ≡m kb y además k y m son coprimos, entonces a ≡m b. ¿Podemos combinar, de alguna manera, congruencias entre dos números si las congruencias tienen diferentes módulos? Es decir, suponiendo que a ≡m1 b y que a ≡m2 b, ¿podemos deducir, en base a ésto, una única congruencia que relacione a a, b, m1 y m2 ? Teorema 5.18. Sean a, b ∈ Z y m1 , m2 ∈ Z+ . Se tiene que (a ≡m1 b ∧ a ≡m2 b) ⇔ a ≡mcm(m1 ,m2 ) b. Demostración. Primero supongamos a ≡m1 b y a ≡m2 b. Entonces tenemos que m1 | (a − b) y m2 | (a − b), es decir, a−b es un múltiplo común de m1 y m2 . Luego, por el teorema 3.34, deducimos que mcm (m1 , m2 ) es factor de a − b, lo que implica que a ≡mcm(m1 ,m2 ) b. Para la implicación recíproca, ya que m1 y m2 son factores de mcm (m1 , m2 ), de la proposición 5.6 deducimos que si a ≡mcm(m1 ,m2 ) b, entonces a ≡m1 b y a ≡m2 b. Corolario 5.19. Para k ≥ 2, sean a, b ∈ Z y m1 , m2 , . . . , mk ∈ Z+ tales que m1 , m2 , . . . , mk son dos a dos coprimos. Se tiene que (a ≡m1 b ∧ a ≡m2 b ∧ . . . ∧ a ≡mk b) ⇔ a ≡m1 m2 ···mk b. Demostración. Por inducción sobre k. El caso k = 2 sale del teorema 5.18, con la consideración de que si m1 es coprimo con m2 , entonces mcm (m1 , m2 ) = m1 m2 (lema 3.36). Supongamos el enunciado válido para k, es decir, (a ≡m1 b ∧ a ≡m2 b ∧ . . . ∧ a ≡mk b) ⇔ a ≡m1 m2 ···mk b toda vez que m1 , m2 , . . . , mk son dos a dos coprimos. Tomemos m1 , m2 , . . . , mk , mk+1 dos a dos coprimos. Tenemos que m1 , m2 , . . . , mk son dos a dos coprimos y que mk+1 es coprimo con m1 m2 · · · mk , por lo que mcm (m1 m2 · · · mk , mk+1 ) = m1 m2 · · · mk mk+1 . De allí que, por el teorema 5.18 y la hipótesis inductiva, se tiene que a ≡m1 m2 ···mk mk+1 b ⇔ a ≡mcm(m1 m2 ···mk ,mk+1 ) b ⇔ a ≡m1 m2 ···mk b ∧ a ≡mk+1 b ⇔ a ≡m1 b ∧ a ≡m2 b ∧ . . . ∧ a ≡mk b ∧ a ≡mk+1 b según se deseaba demostrar. 2.2. Aplicación a la deducción de criterios de divisibilidad. Veremos ahora cómo las congruencias nos permiten demostrar, de manera alternativa a la empleada en el capítulo 2, la validez de ciertos criterios de divisibilidad conocidos, y la deducción de otros. Para ello, nos basaremos fuertemente en el corolario 5.15, que, en definitiva, asevera que si f (x) es una función polinómica a coeficientes enteros y a ≡m b, entonces f (a) ≡m f (b). En lo que sigue, N representará un número natural de k + 1 dígitos, siendo éstos, de derecha a izquierda, Pk a0 , a1 , . . ., ak , de modo que N = j=0 aj 10j . Podemos incluso suponer que hay dígitos 0 a la izquierda, de modo que no necesariamente es ak 6= 0, pero esto no cambiará en nada nuestro análisis. 2.2.1. Divisibilidad por 3 y por 9. Supongamos que queremos saber si N es o no múltiplo de 3. Definamos, Pk para eso, el polinomio a coeficientes enteros f (x) = j=0 aj xj . Claramente, tenemos que f (10) = N . Además, f (1) = a0 + a1 + · · · + ak , es decir, f (1) es la suma de los dígitos de N . Como 10 ≡3 1, del corolario 5.15 tenemos que f (10) ≡3 f (1), es decir, N ≡3 a0 + a1 + · · · + ak . Así que el resto de dividir N por 3 es el mismo que el de dividir a0 + a1 + · · · + ak por 3. Esto nos dice entonces que N es divisible por 3 si, y sólo si, a0 + a1 + · · · + ak es un múltiplo de 3. 62 5. CONGRUENCIAS Notando que además es 10 ≡9 1, deducimos también que N ≡9 a0 + a1 + · · · + ak , por lo que el resto de dividir N por 9 es el mismo que el de dividir a0 + a1 + · · · + ak por 9. De allí que N es divisible por 9 si, y sólo si, a0 + a1 + · · · + ak es un múltiplo de 9. 2.2.2. Divisibilidad por 11. Observando que 10 ≡11 −1, nos damos cuenta de que podemos usar de nuevo Pk k el polinomio f (x) = j=0 aj xj del siguiente modo: ya que f (−1) = a0 −a1 +a2 −· · ·+(−1) ak , por el corolario k 5.15 resulta que N ≡11 a0 − a1 + a2 − · · · + (−1) ak . Luego, N es divisible por 11 si, y sólo si, la suma de los dígitos de N , pero con signos alternados (empezando con + el de la derecha), es múltiplo de 11. Por ejemplo, 71,328,459 no es múltiplo de 11 pues 9 − 5 + 4 − 8 + 2 − 3 + 1 − 7 = −7 no es múltiplo de 11. El número 70.411 es múltiplo de 11, ya que 1 − 1 + 4 − 0 + 7 da 11, que es múltiplo de 11. 2.2.3. Divisibilidad por 7. Si tratamos de seguir el mismo camino que en los casos anteriores para encontrar Pk un criterio de divisibilidad por 7 a través del polinomio f (x) = j=0 aj xj , podemos comenzar planteando que 10 ≡7 3, de modo que N es divisible por 7 si, y sólo si, f (3) es múltiplo de 7. Rápidamente nos damos cuenta de que esto no nos lleva por buen camino, pues la evaluación de f (3) puede ser más tediosa que realizar directamente la división de N por 7. Cambiemos entonces de estrategia. En vez de plantear congruencias módulo 7, hagamos congruencias módulo un múltiplo adecuado de 7. Un múltiplo adecuado es 7 · 11 · 13 = 1.001. ¿Qué tiene de adecuado? Que 103 ≡1.001 −1, siendo −1 un número en el cual es relativamente fácil evaluar polinomios a coeficientes enteros, y 103 una potencia de 10, lo cual será útil para acomodar la expresión de N a partir de sus dígitos de la siguiente manera: N = = a0 + 10a1 + 102 a2 + 103 a3 + 104 a4 + 105 a5 + 106 a6 + 107 a7 + 108 a8 + · · · (100a2 + 10a1 + a0 ) + (100a5 + 10a4 + a3 ) 103 + (100a8 + 10a7 + a6 ) 106 + · · · Hagamos entonces g (x) = (100a2 + 10a1 + a0 ) + (100a5 + 10a4 + a3 ) x + (100a8 + 10a7 + a6 ) x2 + · · · , que es un polinomio a coeficientes enteros. Obviamente, es N = g 103 , y, por otro lado, 3 g (−1) = (100a2 + 10a1 + a0 ) − (100a5 + 10a4 + a3 ) + (100a8 + 10a7 + a6 ) − · · · Siendo 10 ≡1.001 −1, deducimos que N ≡1.001 (100a2 + 10a1 + a0 ) − (100a5 + 10a4 + a3 ) + (100a8 + 10a7 + a6 ) − · · · Llamemos M = (100a2 + 10a1 + a0 )−(100a5 + 10a4 + a3 )+(100a8 + 10a7 + a6 )−· · · . ¿Qué representa esta expresión? Es lo que queda de separar la expresión decimal de N en bloques de a tres dígitos (empezando por la derecha, y pudiendo quedar el bloque de más a la izquierda con menos de tres dígitos), considerar cada bloque como un número individual, y sumar los números correspondientes a cada bloque, con términos alternados (el de la derecha comienza con signo +), según el siguiente esquema: + N3 − N2 + N1 z }| { z }| { z }| { · · · . a8 a7 a6 . a5 a4 a3 . a2 a1 a0 Ahora bien, dado que 1.001 = 7 · 11 · 13 y que 7, 11 y 13 son dos a dos coprimos, del corolario 5.19 tenemos que N ≡7 M , N ≡11 M y N ≡13 M , pues ya hemos deducido que N ≡1.001 M . Luego, N es divisible por 7 si, y sólo si, M es múltiplo de 7. De pasada, hemos encontrado otro criterio para divisibilidad por 11 (que M sea múltiplo de 11) y uno para divisibilidad por 13 (que M sea múltiplo de 13). Ejemplo 5.20. Analicemos si los números 55.233.367 y 1.128.338.783 son múltiplos de 7, 11 o 13. Descomponiendo al primero en bloques de a tres, nos quedan los números 55, 233 y 367. Sumándolos con signos alternados resulta 367 − 233 + 55 = 189 = 33 · 7, que es múltiplo de 7 pero no de 11 ni de 13. Entonces, 55.233.367 es múltiplo de 7 pero no de 11 ni de 13. Para el segundo, la descomposición en bloques de a tres arroja los números 1, 128, 338 y 783. Sumándolos con términos alternados resulta 783 − 338 + 128 − 1 = 572 = 22 · 11 · 13. Se ve entonces que 1.128.338.783 es múltiplo de 11 y de 13, aunque no de 7. 2.2.4. Divisibilidad por potencias de 2. Sean i y j enteros positivos, con j ≥ i. Dado que 10 = 5 · 2, se tiene que 10j = 5j 2j , por lo que, siendo i ≤ j, resulta que 2i | 10j (teorema 4.7). Por lo tanto, 10j ≡2i 0, cualesquiera sean los enteros positivos j ≥ i. Supongamos que queremos saber si N es divisible por alguna potencia de 2, digamos por 2i , con i ≥ 1. Podemos suponer que N tiene al menos i dígitos (pues completamos con ceros a la izquierda, si hace falta), es Pk Pi−1 Pk decir, podemos suponer que k ≥ i − 1. Entonces, N = j=0 aj 10j = j=0 aj 10j + j=i aj 10j . Por nuestro análisis de más arriba, cada término de la segunda sumatoria es congruente módulo 2i con 0, de modo que, Pi−1 Pk j i = por el teorema 5.13, se tiene que j=i aj 10j ≡2i 0, y, por lo tanto, N ≡2i j=0 aj 10 . Es decir, r N, 2 P i−1 j i i r j=0 aj 10 , 2 . En otras palabras, N es divisible por 2 si, y sólo si, los i dígitos de la derecha en la expresión decimal de N representan un número divisible por 2i . Los casos i = 1, i = 2 e i = 3 corresponden, respectivamente, a los conocidos criterios de divisibilidad por 2, por 4 y por 8 (por ejemplo, para divisibilidad por 8 basta verificar si las tres últimas cifras de N representan un número divisible por 8). 3. ECUACIONES DE CONGRUENCIA 63 Ejemplo 5.21. Encontrar la máxima potencia de 2 que es factor de 156.194.848. De acuerdo a nuestro criterio, comenzando con i = 1, vamos considerando las i cifras de la derecha del número dado, y vemos si el número t que representan es múltiplo de 2i . Lo resumimos en la siguiente tabla: t r t, 2i i 2i 1 2 8 0 48 0 2 4 3 8 848 0 4 16 4.848 0 5 32 94.848 0 6 64 194.848 32 Por lo tanto, 32 es la máxima potencia de 2 por la que es divisible el número 156.194.848. 3. Ecuaciones de congruencia Supongamos que f (x) y g (x) son funciones enteras en la variable entera x, y que m ∈ Z+ . Por ejemplo, f (x) = 2x5 − 3x2 , g (x) = x + 1, y m = 7. Tiene sentido interpretar a x como incógnita, y preguntarse cuáles son todos los enteros x tales que f (x) ≡m g (x). Tales ecuaciones se denominan ecuaciones de congruencia en la variable x. Veremos a continuación un tipo básico de ecuaciones de congruencia. 3.1. Ecuación lineal de congruencia en una variable. Son las de la forma ax ≡m b, con a, b ∈ Z y m ∈ Z+ , y donde x es incógnita entera. Por la proposición 5.2, se tiene que ax ≡m b si, y sólo si, existe y ∈ Z tal que b − ax = my. Hemos caído entonces en la resolución de la ecuación lineal diofantina ax + my = b, en las variables x e y. Del teorema 3.38, sabemos que tiene solución si, y sólo si, b es múltiplo de mcd (a, m). Por lo tanto, la ecuación ax ≡m b tiene solución si, y sólo si, b es múltiplo de mcd (a, m). Notemos que, en caso de existir c ∈ Z tal que b = c · mcd (a, m), para resolver la ecuación diofantina sin apelar al tanteo, primero debemos encontrar s, t ∈ Z tales que sa + tm = mcd (a, m). Luego multiplicamos miembro a miembro por c, quedando (sc) a+ m (tc) = b, es decir, (sc) a− b = m (tc), y entonces (sc) a ≡m b; vale decir, una solución a la congruencia es x0 = sc. Las soluciones de la ecuación de congruencia son exactamente las primeras componentes de los pares (x, y) que son solución de la ecuación diofantina. Entonces, por aplicación del teorema 3.39, tenemos que el conjunto solución de ax ≡m b es el conjunto m x0 + n :n∈Z mcd (a, m) Si una ecuación lineal de congruencia tiene solución x0 , la solución no negativa más pequeña que tiene la congruencia es r (x0 , m), pues siendo x0 ≡m r (x0 , m) (proposición 5.9), tenemos que b ≡m ax0 ≡m ar (x0 , m) (lema 5.12). Resumamos todo en el siguiente resultado. Teorema 5.22. Sean a, b ∈ Z, y m ∈ Z+ . La ecuación lineal de congruencia ax ≡m b tiene solución si, y sólo si, b es múltiplo de mcd (a, m). Si tiene solución x0 , tiene infinitas soluciones, que son los números congruentes a x0 módulo m/mcd (a, m), y al menos una de ellas es un entero entre 0 y m − 1. Ejemplo 5.23. Encontrar el conjunto solución de 5x ≡10 7. Tenemos que a = 5, b = 7, m = 10. Resulta mcd (a, m) = 5, que no es factor de b. Luego, la ecuación lineal de congruencia no tiene solución. Ejemplo 5.24. Encontrar el conjunto solución de 6x ≡9 21. Ahora es a = 6, b = 21, m = 9, con mcd (a, m) = 3, que es factor de b. Por lo tanto, buscamos una solución cualquiera a la congruencia. El tanteo nos permite inmediatamente ver que x0 = 5 es solución, pues 6 · 5 − 21 es múltiplo de 9. Entonces, las soluciones de la congruencia son todos los enteros de la forma 5 + 3n, con n ∈ Z. Esos números son . . . , −4, −1, 2, 5, 8, 11, 14, 17, . . . Algunas soluciones son entre sí congruentes módulo 9, y otras no. Por ejemplo, −4 ≡9 5, 8 ≡9 17, 2 6≡9 5 6≡9 8. En particular, vemos que hay exactamente tres soluciones en el rango 0, . . . , m − 1. Ejemplo 5.25. Encontrar el conjunto solución de 127x ≡250 6. Tenemos a = 127, b = 6, m = 250. Ya que 6 es múltiplo de mcd (127, 250) = 1, la congruencia tiene solución. El tanteo resulta difícil, así que calculemos usando el algoritmo extendido de Euclides, invocando euclext (127, 250). Obviando detalles, el resultado de la invocación es (63, −32, 1). En particular, s = 63. Como b/mcd (a, m) = 6, una solución a la congruencia es r (6 · 63, 250) = 128. Entonces, las soluciones de la congruencia son los enteros de la forma 128 + 250n para n ∈ Z, es decir, . . . , −122, 128, 378, 628, . . . Veamos que, en este caso, dos soluciones cualesquiera son congruentes módulo 250: si x1 y x2 son soluciones, deben existir enteros n1 y n2 tales que x1 = 128 + 250n1 y x2 = 128 + 250n2 , de donde x1 − x2 = 250 (n1 − n2 ); ya que 250 | (x1 − x2 ) se tiene que x1 ≡250 x2 . 64 5. CONGRUENCIAS Dada una ecuación lineal de congruencia ax ≡m b que tiene infinitas soluciones, ¿cuáles de ellas son incongruentes entre sí, módulo m? De nuestros dos últimos ejemplos, vemos que, para algunas ecuaciones, todas las soluciones son congruentes módulo m, y para otras hay soluciones que no son congruentes módulo m. Los siguientes resultados clarifican el interrogante. Lema 5.26. Sean a, b, x0 , n1 , n2 ∈ Z, y m ∈ Z+ . Llamemos x1 = x0 + n1 · m/mcd (a, m) y x2 = x0 + n2 · m/mcd (a, m). Se tiene que x1 ≡m x2 si, y sólo si, n1 ≡mcd(a,m) n2 . Demostración. Establezcamos d = mcd (a, m). Si x1 ≡m x2 , existe k ∈ Z tal que (x0 + n1 · m/d) − (x0 + n2 · m/d) = km. Cancelando, se tiene que n1 /d − n2 /d = k, es decir, n1 − n2 = kd, lo que muestra m m que n1 ≡d n2 . Recíprocamente, si n1 ≡d n2 , de la proposición 5.7, tenemos que m d n1 ≡d d d n2 , y de allí m m x0 + d n1 ≡m x0 + d n2 , es decir, x1 ≡m x2 . Teorema 5.27. Supongamos que la ecuación ax ≡m b admite solución x0 . Entonces, los elementos del conjunto I = {x0 + n · m/mcd (a, m) : 0 ≤ n < mcd (a, m)} son soluciones de la ecuación que son dos a dos incongruentes módulo m. Además, cualquier solución de la ecuación es congruente módulo m a algún elemento de I. Demostración. Hagamos d = mcd (a, m). Eligiendo n1 , n2 ∈ {0, . . . , d − 1} con n1 6= n2 , se tiene que n1 6≡d n2 (proposición 5.8), de modo que (x0 + n1 · m/d) y (x0 + n2 · m/d) pertenecen a I, son soluciones de la congruencia (teorema 5.22), y son incongruentes módulo m (lema 5.26). Si x′ es cualquier solución de la congruencia, debe ser x′ = x0 + n′ m/d, para algún n′ ∈ Z. Tomemos n = r (n′ , d), y hagamos x = x0 + n · m/d. Tenemos que 0 ≤ n < d, y entonces x ∈ I. Como n′ ≡d n, del lema 5.26 se tiene que x′ ≡m x. 3.2. Congruencias simultáneas, y el Teorema Chino del Resto. Hace muchos, pero muchos años, los chinos se divertían con acertijos del estilo “Encontrar un número tal que cuando se lo divide por 14 produce resto 9, cuando se lo divide por 15 produce resto 1, y cuando se lo divide por 17 produce resto 12” (y bueno... no habían sido inventados todavía los Power Rangers ni Internet; ¡y tal vez por eso mismo ahora los chinos son tantos!). Este acertijo puede representar una situación real: “Tengo una cierta cantidad de caramelos de modo que cuando los distribuyo entre 14 personas sobran 9, si los reparto entre 15 sobra 1, y si los distribuyo entre 17 personas, sobran 12 caramelos; ¿cuántos caramelos tengo entonces? ” En nuestro lenguaje de las congruencias, tal acertijo se enuncia así: encontrar un número x tal que, simultáneamente, x ≡14 9, x ≡15 1, y x ≡17 12. Estamos en presencia de un sistema de congruencias simultáneas, que son aquellos formados por congruencias de la forma x ≡m1 a1 , x ≡m2 a2 , . . ., x ≡mk ak en las que hay una incógnita x, y los módulos de las distintas congruencias son diferentes. Se pretende entonces encontrar todos los valores enteros de x que satisfacen todas las congruencias simultáneamente. ¿Hay siempre solución para un sistema de congruencias simultáneas? Ejemplo 5.28. Encontrar x tal que simultáneamente satisfaga x ≡2 0 y x ≡4 1. Por la proposición 5.2, un entero que satisface la primera de las congruencias debe ser un número par. Para satisfacer la segunda, debe ser x = 1 + 4n para algún n ∈ Z, y entonces debe ser x impar. Queda claro entonces que ningún entero satisface al mismo tiempo las dos congruencias, por lo que no hay solución para las congruencias simultáneas. Ejemplo 5.29. Encontrar x tal que simultáneamente satisfaga x ≡4 3 y x ≡7 1. Para que la primera congruencia sea cierta, debe ser x − 3 un múltiplo de 4, es decir, x = 3 + 4n para n ∈ Z. Por eso, los enteros que satisfacen la primera congruencia son los del conjunto {. . . − 41, −37, −33, −29, −25, −21, −17, −13, −9, −5, −1, 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, . . .} Análogamente, el conjunto solución de la segunda congruencia es {. . . − 48, −41, −34, −27, −20, −13, −6, 1, 8, 15, 22, 29, 36, 43, . . .} Viendo los elementos comunes a ambos conjuntos, deducimos que, por ejemplo, −41 es una solución al sistema. Otras son −13, 15 y 43. De este tanteo, no queda claro si hay infinitas soluciones, pero vemos que soluciones consecutivas encontradas difieren en 28, que es el producto de los módulos de las congruencias del sistema. Hay un caso básico de congruencias simultáneas: el caso en que se tiene un sistema de dos congruencias. La búsqueda de soluciones se establece en el siguiente resultado. Lema 5.30. Sean a1 , a2 ∈ Z, y sean m1 , m2 ∈ Z+ . El sistema de congruencias x ≡ m 1 a1 x ≡ m 2 a2 tiene solución en x si, y sólo si, a1 −a2 es un múltiplo de mcd (m1 , m2 ). Cuando admite solución x0 , el conjunto solución del sistema es el conjunto de todos los enteros congruentes módulo mcm (m1 , m2 ) con x0 . 3. ECUACIONES DE CONGRUENCIA 65 Demostración. Un entero x es solución de la segunda congruencia si, y sólo si, existe k ∈ Z tal que x = a2 + km2 . Luego, el sistema tiene solución si, y sólo si, existe k ∈ Z tal que a2 + km2 ≡m1 a1 , o equivalentemente, m2 k ≡m1 a1 − a2 . Esta es una congruencia lineal en la variable k que admite solución si, y sólo si, mcd (m1 , m2 ) | (a1 − a2 ) (teorema 5.22), con lo que queda probada la primera afirmación. Supongamos ahora que el sistema tiene solución x0 . Debe ser x0 = a2 + k0 m2 para algún entero k0 que satisfaga la congruencia m2 k ≡m1 a1 − a2 . Sabemos que todas las soluciones de esta última son de la forma k0 + n · m1 /mcd (m1 , m2 ) con n ∈ Z (teorema 5.22), por lo que el conjunto solución del sistema es m1 m2 m1 m2 : n ∈ Z = a 2 + k 0 m2 + n :n∈Z a 2 + k0 + n mcd (m1 , m2 ) mcd (m1 , m2 ) = {x0 + n · mcm (m1 , m2 ) : n ∈ Z} es decir, el conjunto de todos los enteros congruentes módulo mcm (m1 , m2 ) a x0 . Volviendo al ejemplo 5.28, tenemos a1 = 0, a2 = 1, m1 = 2 y m2 = 4. El sistema no tiene solución, pues no se cumple la condición necesaria y suficiente dada en el lema: a2 − a1 = 1, que no es múltiplo de mcd (m1 , m2 ) = 2. En relación al ejemplo 5.29, es a1 = 3, a2 = 1, m1 = 4 y m2 = 7. Ya que a2 − a1 = −2 y mcd (m1 , m2 ) = 1, se satisface la condición dada en el lema 5.30, y el sistema admite solución, tal como ya hemos visto. Sabiendo que una de ellas es −41, del lema podemos concluir que el conjunto solución está formado por todos los números de la forma −41 + 28n, pues mcm (4, 7) = 28. ¿Y qué pasa si tenemos más de dos congruencias simultáneas? Por fortuna, hay un resultado que, basado en el lema anterior, establece una condición suficiente para que el sistema admita solución, y que además caracteriza a las soluciones en caso de haberlas. Sería inadmisible que el nombre de tal resultado no haga referencia a la China que originó el problema. Teorema 5.31. (Teorema Chino del Resto) Dado k ≥ 1, sean m1 , m2 , . . ., mk ∈ Z+ dos a dos coprimos, y a1 , a2 , . . ., ak ∈ Z. Entonces, el sistema de congruencias x ≡m1 a1 , x ≡m2 a2 , . . . , x ≡mk ak admite solución x0 tal que 0 ≤ x0 < m1 m2 · · · mk . El conjunto solución del sistema es el conjunto de todos los enteros que son congruentes a x0 módulo m1 m2 · · · mk . Demostración. Desglosaremos la prueba en dos partes. 1. Primero demostremos que el sistema admite solución, por inducción sobre k (la cantidad de congruencias en el sistema). Si hubiese una sola congruencia, basta con tomar x = a1 , que obviamente satisface al “sistema”. Supongamos ahora que todo sistema con k congruencias de módulos dos a dos coprimos admite solución. Consideremos el sistema x ≡m1 a1 , x ≡m2 a2 , . . . , x ≡mk ak , x ≡mk+1 ak+1 , con m1 , . . . , mk , mk+1 dos a dos coprimos. De la hipótesis inductiva, sabemos que existe x′0 tal que x′0 ≡m1 a1 , x′0 ≡m2 a2 , . . . , x′0 ≡mk ak . Consideremos el siguiente sistema de dos congruencias: x ≡m1 ···mk x′0 (*) x ≡mk+1 ak+1 Siendo mk+1 coprimo con m1 , . . . , mk es mcd (m1 · · · mk , mk+1 ) = 1, y entonces se satisface la condición necesaria y suficiente del lema 5.30 para existencia de solución al sistema (*), pues 1 es un factor de x′0 − ak+1 . Sea z una solución del mismo. Entonces, se cumple que z ≡mk+1 ak+1 y que z ≡m1 ···mk x′0 . De esta última, tenemos, de la proposición 5.6, que z ≡m1 x′0 , . . . , z ≡mk x′0 , y como x′0 ≡m1 a1 , . . . , x′0 ≡mk ak , se deduce que también es z ≡m1 a1 , . . . , z ≡mk ak . Es decir, z es una solución al sistema de k + 1 congruencias. 2. En el ítem anterior, hemos mostrado que si m1 , . . . , mk son dos a dos coprimos, el sistema de congruencias x ≡m1 a1 , x ≡m2 a2 , . . . , x ≡mk ak admite solución w. Llamemos x0 = r (w, m1 · · · mk ). Ya que x0 ≡m1 ···mk w, tenemos, por la proposición 5.6, que x0 ≡m1 w ≡m1 a1 , . . . , x0 ≡mk w ≡mk ak , y entonces x0 es solución al sistema de k congruencias que satisface 0 ≤ x0 < m1 · · · mk . Por otro lado, por la transitividad de las congruencias y por el corolario 5.19, para cualquier entero y se tiene que (y ≡m1 a1 ∧ . . . ∧ y ≡mk ak ) ⇔ (y ≡m1 x0 ∧ . . . ∧ y ≡mk x0 ) ⇔ y ≡m1 ···mk x0 Es decir, el conjunto solución del sistema de congruencias es el conjunto de todos los enteros que son congruentes módulo m1 · · · mk con x0 . Esto completa la demostración del teorema. En la demostración del Teorema Chino (más precisamente, en el paso inductivo), tenemos implícito un mecanismo recursivo para encontrar una solución al sistema. Todo lo que hay que hacer es saber resolver sistemas de dos congruencias y, en base a ello, ir armando nuevas congruencias. La resolución de sistemas de dos congruencias necesita a su vez de la resolución de ecuaciones lineales de congruencia, y es mejor hacer ésto 66 5. CONGRUENCIAS a través del algoritmo extendido de Euclides, como se explicó en la sección correspondiente, pues el tanteo será casi seguramente muy engorroso. A continuación, ejemplificamos la ejecución del método. Ejemplo 5.32. Encontrar un número x tal que, simultáneamente, verifique x ≡14 9, x ≡15 1, x ≡17 12 y x ≡23 20. Tras verificar que los módulos de las congruencias son dos a dos coprimos, nos abocamos a la búsqueda de solución. 1. Encontramos una solución a la primera congruencia. Es fácil: x′0 = 9. 2. Ahora resolvemos el sistema de dos congruencias x ≡14 9, x ≡15 1. Esto nos lleva a la búsqueda de t tal que 1 + 15t ≡14 9, es decir, 15t ≡14 8. Una solución a esta congruencia lineal es t0 = 8. Calculamos x′0 = 1 + 15 · 8 = 121 (que es una solución a las dos primeras congruencias) y formamos una nueva congruencia: x ≡210 121 (el módulo es 210 porque 14 · 15 = 210). 3. Ahora resolvemos el sistema de dos congruencias x ≡210 121, x ≡17 12. Esto nos lleva a la búsqueda de t tal que 12 + 17t ≡210 121, es decir, 17t ≡210 109. Una solución a esta congruencia lineal es t0 = 167. Calculamos x′0 = 12 + 17 · 167 = 2.851 (que es solución a las tres primeras congruencias) y formamos una nueva congruencia: x ≡3.570 2.851 (el módulo es 3.570 porque 210 · 17 = 3.570). 4. Finalmente resolvemos el sistema de dos congruencias x ≡3.570 2.851, x ≡23 20. Esto nos lleva a la búsqueda de t tal que 20 + 23t ≡3.570 2.851, es decir, 23t ≡3.570 2.831. Una solución a esta congruencia lineal es t0 = 2.917. Calculamos x′0 = 20 + 23 · 2.917 = 67.111. Entonces, una solución al sistema propuesto es 67.111, lo cual se puede verificar por cálculo directo. Además, observemos que 14 · 15 · 17 · 23 = 82.110, de modo que la solución encontrada está dentro del rango que asegura el Teorema Chino del Resto (esto tiene que ver con que, en cada paso, hemos ido calculando t0 positivo lo más chico posible, y con que de entrada teníamos 0 ≤ ai < mi para i = 1, 2, 3, 4). Todas las soluciones del sistema son los números de la forma 67.111 + 82.110n, con n ∈ Z. Escribiremos a continuación el extenso algoritmo para resolver congruencias simultáneas, en notación funcional. Habrá una función auxiliar, res2cong (a1 , a2 , m1 , m2 ), para resolver el sistema de dos congruencias x ≡m1 a1 , x ≡m2 a2 , y que quedará indefinido en el caso en que las dos congruencias no cumplan la condición necesaria y suficiente del lema 5.30; ésa será la manera en que el algoritmo nos indicará que un sistema no admite solución. La función principal se llamará chino, que recibirá, como argumentos, las listas de números {a1 , . . . , ak } y {m1 , . . . , mk }, entendiéndose por ésto que se desea resolver el sistema de k congruencias x ≡m1 a1 , x ≡m2 a2 , . . ., x ≡mk ak . Si al ejecutarse el algoritmo se invoca a res2cong y éste queda indefinido, se debe interrumpir la ejecución, con la conclusión de que no hay solución al sistema. res2cong (a1 , a2 , m1 , m2 ) = sea (s, t, g) = euclext(m2 , m1 ) sea (c, r) = crent(a1 − a2 , g) si (r = 0) contestar r a2 + m2 sc, m1gm2 chino ({a1 , . . . , ak } , {m1 , . . . , mk }) = si (k = 1) contestar a1 sino contestar chino ({res2cong (a1 , a2 , m1 , m2 ) , a3 , . . . , ak } , {m1 m2 , m3 , . . . , mk }) Cortito, ¿no? Lo bueno, si breve... 4. Aspectos algebraicos de la congruencia: aritmética modular La proposición 5.9 tiene una gran importancia en el siguiente sentido: ya que todo entero a es congruente módulo m a r (a, m), que es un número entre 0 y m − 1, toda vez que hagamos operaciones entre enteros, éstas serán también congruentes a un número entre 0 y m − 1. Por ejemplo, 5 · 8 + 4 ≡3 2, y 2 · 2 + 1 ≡3 2. Notemos que 5 ≡3 2, 8 ≡3 2 y 4 ≡3 1. De este modo, las expresiones 5 · 8 + 4 y 2 · 2 + 1, si bien distintas como números enteros, son congruentes módulo 3 a un mismo número del conjunto {0, 1, 2}. Haciendo operaciones entre enteros, y tomando en cada paso el resto de la división por m, produciremos un número entre 0 y m − 1. Y el número producido será congruente módulo m al resultado de aquella misma operación en enteros. Tiene sentido definir entonces un sistema aritmético en el que sólo existan los números enteros desde 0 hasta m − 1, y en el cual las operaciones básicas de suma y producto sean los resultados de hacer esas mismas operaciones en Z y tomar resto de la división por m. En tal sistema, la congruencia módulo m es naturalmente sustituida por la igualdad. El teorema 5.13 nos garantiza que las igualdades (en este nuevo sentido) se comportan como uno espera. Definición 5.33. Para m ∈ Z+ , definimos el conjunto Zm como el conjunto de todos los enteros mayores o iguales que 0 y menores que m. En Zm , se definen las operaciones suma módulo m (+m ) y producto módulo 4. ASPECTOS ALGEBRAICOS DE LA CONGRUENCIA: ARITMÉTICA MODULAR m (×m ) de la siguiente forma, para a, b ∈ Zm : a +m b = r (a + b, m) 67 a ×m b = r (ab, m) El sistema aritmético modular Zm es el conjunto Zm con sus operaciones de suma y producto módulo m. Es decir, Zm = {0, 1, . . . , m − 1} y a +m b es el único número de Zm al cual es congruente el entero a + b. O sea que para a, b, c ∈ Zm , se tiene que a +m b = c si, y sólo si, a + b ≡m c. Análogamente, a ×m b = c si, y sólo si, ab ≡m c. Como vemos, +m y ×m son dos operaciones binarias bien definidas (cerradas) en Zm . Además, de la definición se ve que dos expresiones que contengan elementos y operaciones en Zm y que sean iguales en Zm , pueden verse automáticamente como congruencias módulo m en Z. Por ejemplo, decir que a ×m b = (c +m d) ×m k en Zm es equivalente a tener ab ≡m (c + d) k, con las operaciones habituales de suma y producto de enteros. Recíprocamente, cualquier congruencia módulo m en enteros puede verse como una igualdad en Zm , reemplazando a cada entero a que aparezca por r (a, m), y a las sumas y multiplicaciones de enteros por sumas y productos en Zm . Investigaremos ahora propiedades del sistema que acabamos de definir. Cuando se estudian las propiedades de operaciones binarias definidas en un conjunto, estamos entrando al territorio de la Matemática que se llama Álgebra. ¿Cómo son las tablas de las operaciones en Zm ? Veamos algunos ejemplos. Para Z4 : ×4 0 1 2 3 +4 0 1 2 3 0 0 1 2 3 0 0 0 0 0 1 1 2 3 0 1 0 1 2 3 2 2 3 0 1 2 0 2 0 2 3 3 0 1 2 3 0 3 2 1 Para Z5 : +5 0 1 2 3 4 ×5 0 1 2 3 4 0 0 1 2 3 4 0 0 0 0 0 0 1 1 2 3 4 0 1 0 1 2 3 4 2 2 3 4 0 1 2 0 2 4 1 3 3 3 4 0 1 2 3 0 3 1 4 2 4 4 0 1 2 3 4 0 4 3 2 1 La simetría con respecto a la diagonal sugiere que la suma y el producto en Zm son operaciones conmutativas. Efectivamente, para a, b ∈ Zm , a +m b ≡m a + b = b + a ≡m b +m a, es decir, a +m b ≡m b +m a, lo cual implica que a +m b = b +m a (proposición 5.8). Argumentos análogos muestran que el producto módulo m es conmutativo, y que la suma y el producto módulo m son también operaciones asociativas. Otra propiedad importante de Zm , que relaciona a sus dos operaciones, es que vale la propiedad distributiva del producto respecto de la suma: para a, b, c ∈ Zm , tenemos que a ×m (b +m c) ≡m a (b + c) = ab + ac ≡m (a ×m b) +m (a ×m c) Siendo a ×m (b +m c) ≡m (a ×m b) +m (a ×m c) y ambos elementos de Zm , se sigue que a ×m (b +m c) = (a ×m b) +m (a ×m c). Las dos operaciones tienen elemento neutro en Zm , el 0 en el caso de la suma y el 1 en el del producto: para a ∈ Zm , tenemos que a +m 0 ≡m a + 0 = a, por lo que a +m 0 = a, pues a ∈ Zm . Por otro lado, a ×m 1 ≡m a · 1 = a, por lo que a ×m 1 = a. Investiguemos ahora la existencia de los inversos para cada operación. De nuestros ejemplos a través de las tablas, conjeturamos que cada elemento a ∈ Zm tiene inverso aditivo en Zm , es decir, un x ∈ Zm tal que a +m x = 0. Esto porque en cada fila de la tabla de suma aparece el neutro (y una sola vez en cada fila). ¿Quién es ese x? Por inspección, podemos sospechar que casi siempre es m − a. Efectivamente. Proposición 5.34. Sea m ∈ Z+ , y a ∈ Zm . El inverso aditivo de a en Zm existe y es único, y vale m − a, salvo el caso a = 0 cuyo inverso aditivo es 0. Demostración. Buscamos x ∈ Zm tal que a +m x = 0. Tenemos que a +m x = 0 ⇔ a + x ≡m 0 ⇔ x ≡m −a ⇔ x ≡m m − a Como 0 ≤ a < m, tenemos que 0 < m − a ≤ m. Si a = 0, queda que x ≡m 0, y entonces x = 0. Si a 6= 0, ya que m − a ∈ Zm , se sigue que x = m − a. En adelante, al inverso aditivo de a lo llamaremos opuesto de a, y lo denotaremos por −a. En particular, en Zm tenemos que −1 = m − 1. ¿Y qué hay de inversos para el producto? Es decir, dado a ∈ Zm , ¿existe x ∈ Zm tal que a ×m x = 1? Vemos que 0 no tiene inverso en ningún Zm , pues 0×m x = 0 cualquiera sea x ∈ Zm . ¿Qué pasa con los elementos no nulos de Zm ? De la tabla de multiplicar en Z4 , vemos que en la fila del 2 no aparece el neutro, por lo que 2 68 5. CONGRUENCIAS no tiene inverso para esta operación. 1 y 3 sí lo tienen. En la tabla de ×5 , todo elemento no nulo tiene inverso. Veamos qué es lo que pasa. Proposición 5.35. Sea m ∈ Z+ , y a ∈ Zm − {0}. Se tiene que a posee inverso multiplicativo en Zm si, y sólo si, a y m son coprimos. El inverso multiplicativo de a, si existe, es único. Demostración. Buscamos x ∈ Zm tal que a ×m x = 1. Tenemos que a ×m x = 1 ⇔ ax ≡m 1, es decir, existe el inverso multiplicativo de a si, y sólo si, la ecuación lineal de congruencia ax ≡m 1 tiene solución en Z, lo cual ocurre si, y sólo si, mcd(a, m) | 1 que equivale a decir que mcd (a, m) = 1. Entonces, a tiene inverso multiplicativo en Zm si, y sólo si, a es coprimo con m. Para la unicidad, supongamos que a ∈ Zm admite inverso multiplicativo b ∈ Zm . Debe ser entonces mcd (a, m) = 1. Sea c ∈ Zm tal que a×m c = 1. Luego, ab ≡m 1 ≡m ac, y por transitividad de la congruencia resulta ab ≡m ac. Como a y m son coprimos, por el corolario 5.17, es b ≡m c, y entonces, por la proposición 5.8, resulta b = c. Es decir, el inverso de a es único. En lo sucesivo, al inverso multiplicativo de a, si existe, lo llamaremos simplemente inverso, y lo denotaremos por a−1 . Si p es primo, no puede ser un factor de ningún elemento a ∈ Zp − {0}, pues es 0 < a < p (proposición 2.9). Entonces, p es coprimo con todo elemento de Zp − {0} (proposición 3.4). Como consecuencia de ésto y de nuestras investigaciones anteriores sobre existencia de inversos para el producto, tenemos el siguiente resultado. Corolario 5.36. Si p es un número primo positivo, todo elemento de Zp , excepto el 0, tiene un único inverso. En N y en Z, ocurre que el producto de dos números es 0 si, y sólo si, al menos uno de los números es 0. En Zm puede ser que no. Por ejemplo, en Z6 tenemos que 2 ×6 3 = 0. Pero en Zp con p primo, uno de los factores debe ser 0 para que el producto sea 0. Proposición 5.37. Sea p un primo positivo, y sean a, b ∈ Zp . Se tiene que a ×p b = 0 si, y sólo si, a = 0 o b = 0. Demostración. Supongamos que a ×p b = 0. Entonces, ab ≡p 0, por lo que p | ab. Por la regla de oro de la aritmética, p | a o p | b. Pero siendo a, b ∈ Zp , esto implica que o bien a = 0 o bien b = 0. La implicación recíproca es consecuencia directa de la definición de producto módulo p. En cualquier Zm se tiene que 1 ×m 1 = 1 y (m − 1) ×m (m − 1) = 1. Esta última puede verse ya que, por 2 2 propiedades de congruencias, (m − 1) ≡m (−1) = 1. Esto nos hace ver que, en Zm , el inverso de 1 es 1, y el de m − 1 es m − 1. ¿Puede haber en Zm algún otro número que sea su propio inverso? Por supuesto que sí, por ejemplo en Z8 tenemos que 3 ×8 3 = 1, por lo que 3 es su propio inverso en Z8 . Pero en Zp , con p primo, la cosa cambia. Proposición 5.38. Sea p primo positivo. Los únicos números que coinciden con su inverso en Zp son 1 y p − 1. Demostración. Más arriba vimos que siempre es 1 ×m 1 = 1 y (p − 1) ×m (p − 1) = 1. Luego, cada uno de ellos coincide con su inverso en Zp . Para ver que son los únicos que tienen esa propiedad, sea x ∈ Zp tal que x ×p x = 1 en Zp . Debe ser entonces, en la aritmética de Z, x2 ≡p 1, es decir, p debe ser un factor de x2 − 1. Esto equivale a que p | (x − 1) (x + 1). Por la regla de oro de la aritmética, debe ser p | (x − 1) o p | (x + 1). Entonces, ya que 0 ≤ x < p, debe ser x = 1 o x = p − 1 (pues en cualquier otro caso es 0 < |x − 1| < p y 0 < |x + 1| < p). Con esto queda demostrada la proposición. 4.1. El Teorema de Wilson. Para m ≥ 2, ¿cuánto vale r ((m − 1)!, m)? Veamos la siguiente tabla, para 2 ≤ m ≤ 10. m (m − 1)! r ((m − 1)!, m) m (m − 1)! r ((m − 1)!, m) m (m − 1)! r ((m − 1)!, m) 2 1 1 6 120 0 10 362.880 0 3 2 2 7 720 6 11 3.628.800 10 4 6 2 8 5.040 0 12 39.916.800 0 5 24 4 9 40.320 0 13 479.001.600 12 De la lectura de la tabla podemos elaborar las siguientes conjeturas: 1. Si m es primo, el resto es m − 1. 2. Si m no es primo, el resto es 0, excepto el caso m = 4. Veremos ahora que las conjeturas son ciertas. Para guiar la intuición en el caso de ser m primo, analicemos el caso m = 7, contando con el invalorable apoyo de nuestros conocimientos de Z7 y los inversos. Tenemos que 6! = 1 · 2 · 3 · 4 · 5 · 6. En Z7 , el inverso de 2 debe ser 3, 4 o 5 (proposición 5.38). Por cálculo, vemos que es 4. Y entonces 3 y 5 son inversos entre sí. Por lo tanto, si multiplicamos módulo 7 los factores de 6!, resulta 1 ×7 2 ×7 3 ×7 4 ×7 5 ×7 6 = 1 ×7 (2 ×7 4) ×7 (3 ×7 5) ×7 6 = 1 ×7 1 ×7 1 ×7 6 = 6 4. ASPECTOS ALGEBRAICOS DE LA CONGRUENCIA: ARITMÉTICA MODULAR 69 de donde 6! ≡7 6, y por lo tanto r (6!, 7) = 6. Esto que hemos hecho para este ejemplo, se puede hacer en general. Teorema 5.39. (Wilson) Si p es primo positivo, entonces (p − 1)! ≡p −1. Demostración. Si p = 2, tenemos que 1! = 1 ≡2 −1, y entonces el enunciado es cierto. Si p > 2, consideremos F = {2, 3, . . . , (p − 2)}. Cada a ∈ F tiene su inverso (para el producto en Zp ) a−1 ∈ F , con a−1 6= a (proposición 5.38). Por lo tanto, con todos los elementos de F se pueden formar (p − 3) /2 pares de números tales que el producto módulo p de los números de cada pareja es 1. Por lo tanto, 2×p 3×p · · ·×p (p−2) = 1, es decir, 2 · 3 · · · (p − 2) ≡p 1 y entonces (p − 1)! ≡p p − 1 ≡p −1, como queríamos probar. El teorema se llama así porque quien lo conjeturó fue el inglés John Wilson, pero en realidad quien lo demostró es el francés Joseph Lagrange. La implicación recíproca a la del Teorema de Wilson es también cierta. Teorema 5.40. Sea m un entero positivo mayor que 1. Si (m − 1)! ≡m −1, entonces m es primo. Demostración. La aseveración es verdadera para m = 2 pues el consecuente es verdadero, así que veamos que se cumple para m > 2. Para probar por el absurdo, supongamos que m es compuesto y que (m − 1)! ≡m −1. Entonces, deben existir a, b ∈ N tales que m = ab con 2 ≤ a ≤ b ≤ m − 1. Tenemos que a | (m − 1)!, pues a es uno de los m − 1 factores que componen el factorial. Como (m − 1)! ≡m −1, tenemos que m | (m − 1)! + 1, y, por transitividad de la divisibilidad, resulta que a | (m − 1)! + 1. Siendo a factor de (m − 1)! y (m − 1)! + 1, por la proposición 2.14, debe ser a un factor de 1, y entonces, por la proposición 2.10, es a = 1, contradiciendo que es a ≥ 2. La contradicción provino de suponer que m es compuesto. Luego, m es primo. Finalmente, ¿qué pasa con r ((m − 1)!, m) si m no es primo? Teorema 5.41. Si m es un compuesto positivo que es distinto de 4, entonces (m − 1)! ≡m 0. Demostración. Sea m ≥ 2 compuesto distinto de 4. Entonces, existen a, b ∈ N tales que m = ab con 2 ≤ a ≤ m − 1 y 2 ≤ b ≤ m − 1. Si a 6= b, tenemos que ab | (m − 1)! pues a y b corresponden a factores distintos en el factorial, y entonces m | (m − 1)!, de donde (m − 1)! ≡m 0. Si a = b, debe ser a > 2 (pues si fuese a = 2, sería m = 4, en contra de la hipótesis), y entonces m = a2 > 2a, es decir, 2a ≤ m−1. Entonces, como 2 < a < 2a ≤ m−1, se tiene que a y 2a corresponden a factores distintos en el factorial, de donde 2a2 | (m − 1)!. Por transitividad de la divisibilidad, tenemos entonces que m | (m − 1)!, de donde (m − 1)! ≡m 0. En definitiva, en cualquier caso tenemos que (m − 1)! ≡m 0 toda vez que m es compuesto distinto de 4. 4.2. Una manera equivalente de definir Zm . La congruencia módulo m es una relación en el conjunto de los números enteros: dados a, b ∈ Z, o bien a ≡m b o bien a 6≡m b. Las proposiciones 5.3, 5.4 y 5.5 nos dicen que la relación de congruencia módulo m es una relación de equivalencia en el conjunto de los números enteros. Cuando en un conjunto hay definida una relación de equivalencia, tiene sentido definir la clase de equivalencia de cada elemento del conjunto. Una clase de equivalencia agrupa a todos los elementos del conjunto que comparten la característica por la cual son equivalentes. En el caso de la congruencia módulo m, para a ∈ Z, la clase de equivalencia de a, denotada por [a], es [a] = {b ∈ Z : b ≡m a}, es decir, el conjunto de todos los enteros congruentes módulo m con a. Ejemplo 5.42. En el caso m = 5, tenemos que [17] = = Análogamente, {b ∈ Z : b ≡5 17} = {b ∈ Z : ∃k ∈ Z : b = 17 + 5k} {17 + 5k : k ∈ Z} = {. . . , −8, −3, 2, 7, 12, 17, 22, 27, . . .} [2] = {2 + 5k : k ∈ Z} = {. . . , −8, −3, 2, 7, 12, 17, 22, 27, . . .} [4] = {4 + 5k : k ∈ Z} = {. . . , −6, −1, 4, 9, 14, 19, 24, 29, . . .} Se observa que, como conjuntos, [17] = [2] (¿tendrá algo que ver el hecho de que 17 ≡5 2?), en tanto que parece que no hay elementos comunes a [2] y [4] (obsérvese que 2 6≡5 4). Además, 2 ∈ [2], 4 ∈ [4], 17 ∈ [17]. Del ejemplo anterior, nos damos cuenta de que puede haber enteros distintos cuyas clases de equivalencia coinciden, y que puede haber clases de equivalencias distintas que no tengan elementos comunes. Además, conjeturamos que todo entero pertenece a su propia clase de equivalencia. Todo esto es cierto, y lo demostramos en los siguientes resultados. Proposición 5.43. Sea m ∈ Z+ . Entonces, ∀a ∈ Z, a ∈ [a]. Demostración. Para cualquier entero a, se tiene que a ≡m a (proposición 5.3). Luego, a ∈ [a]. + Proposición 5.44. Sea m ∈ Z . Entonces, ∀a ∈ Z, a ∈ [r (a, m)]. 70 5. CONGRUENCIAS Demostración. De la proposición 5.9, sabemos que cualquier entero a es congruente módulo m a r (a, m), por lo que a ∈ [r (a, m)]. Proposición 5.45. Sea m ∈ Z+ , y a, b ∈ Z. Se tiene que [a] = [b] si, y sólo si, a ≡m b. Demostración. Para la ida, supongamos que [a] = [b]. Como a ∈ [a], tenemos que a ∈ [b], y por lo tanto a ≡m b. Para la vuelta, supongamos que a ≡m b. Debemos mostrar que los conjuntos [a] y [b] son iguales. Sea c ∈ [a]. Entonces c ≡m a, y como por hipótesis es a ≡m b, por transitividad tenemos que c ≡m b, de donde c ∈ [b]. Idénticamente deducimos que si c ∈ [b], entonces c ∈ [a]. Luego, [a] = [b]. Corolario 5.46. Sea m ∈ Z+ . Entonces, ∀a ∈ Z, [a] = [r (a, m)]. Que dos conjuntos sean distintos no quita la posibilidad de que tengan elementos en común. Sin embargo, cuando esos conjuntos son clases de equivalencia de una congruencia módulo m, no cabe esa posibilidad: dos clases de equivalencia distintas son disjuntas. Proposición 5.47. Sea m ∈ Z+ , y sean a, b ∈ Z tales que a 6≡m b. Entonces, [a] ∩ [b] = ∅. Demostración. Por contrarreciprocidad, supongamos que [a] ∩ [b] 6= ∅. Entonces existe c tal que c ∈ [a] y c ∈ [b], es decir, c ≡m a y c ≡m b. Por transitividad, tenemos que a ≡m b. De todo lo anterior, tenemos que las distintas clases de equivalencia bajo la relación ≡m forman una partición de Z: literalmente, Z está partido en clases de equivalencia, de modo que cada entero está en sólo una de ellas, y si unimos todas las clases de equivalencia obtenemos todo Z. ¿Cuántas clases de equivalencia distintas hay para la relación ≡m ? De las proposiciones anteriores, tenemos que tratar de seleccionar la mayor cantidad posible de enteros de modo que ningún par de ellos sea congruente módulo m. Eso nos lleva directamente a pensar en los sistemas completos de restos módulo m. Hemos visto que uno de ellos es {0, 1, . . . , m − 1}. Como todo sistema completo de restos módulo m, tiene m elementos. Quiere decir entonces que hay m clases de equivalencia distintas para ≡m , y son [0], [1], . . ., [m − 1]. Designemos por Qm al conjunto cuyos elementos son las clases de equivalencias distintas por ≡m . Es decir, Qm = {[0] , [1] , . . . , [m − 1]} Sean a y b enteros cualesquiera, y supongamos que tomamos c ∈ [a] y d ∈ [b]. Esto quiere decir que c ≡m a y d ≡m b. Por el teorema 5.13, es c + d ≡m a + b y cd ≡m ab, por lo que c + d ∈ [a + b] y cd ∈ [ab]. Es decir, sumar cualquier elemento de [a] con cualquier elemento de [b] produce un elemento en [a + b], y similarmente para el producto. Basados en ésto, podemos definir en Qm dos operaciones binarias, suma y producto, de la siguiente manera: para [a] y [b] pertenecientes a Qm , hagamos [a] + [b] = [a + b] [a] [b] = [ab] Debemos notar que son operaciones bien definidas, pues [a + b] = [r (a + b, m)] ∈ Qm y [ab] = [r (ab, m)] ∈ Qm (corolario 5.46). Ejemplo 5.48. Para m = 5, es Q5 = {[0] , [1] , [2] , [3] , [4]}. Se tiene que, por ejemplo, [1] + [2] = [3], y [2] [2] = [4]. También es [3] + [4] = [7] = [2], y [3] [4] = [12] = [2]. ¿Cómo podemos hacer para saber, de manera rápida, cuánto vale [a] + [b]? Fácil: sumamos a y b como números enteros, y vemos cuál es el resto de la división por m. Análogamente para [a] [b]. Pareciera entonces que los corchetes no son necesarios, a condición de que hagamos la correspondiente operación y tomemos resto de la división por m (aunque convengamos que suena más natural decir [3] + [4] = [2] que 3 + 4 = 2, sobre todo si no estamos advertidos que, en esta última, “=” debe interpretarse como ≡5 ). Debe caerse en cuenta de la correspondencia que hay entre Qm y Zm , tanto por sus elementos como por sus operaciones. En realidad, Qm y Zm , con sus respectivas operaciones, pueden verse como la misma cosa, nada más que con los nombres de sus elementos cambiados. Por esto, algunos autores definen Zm como el conjunto de las clases de equivalencia en Z bajo la relación de equivalencia ≡m . En la materia Estructuras Algebraicas se verá con todo detalle una generalización de todo esto, y se establecerá formalmente lo que quiere decir que “dos conjuntos y sus respectivas operaciones son la misma cosa salvo cambio de nombres”. 4.3. El Pequeño Teorema de Fermat. En Zm tiene sentido también definir la operación de potenciación natural positiva: para a ∈ Zm y n ∈ Z+ , an representa a ×m a ×m · · · ×m a, la operación de a consigo mismo n veces. Formalmente, a si n = 1 n a = a ×m an−1 si n > 1 Con esta definición, se tiene que an ∈ Zm para cualquier entero positivo n. Puede verse rápidamente que hacer potenciación en Zm es equivalente a hacer potenciación en Z y tomar el resto de la división por m. Ocurre 4. ASPECTOS ALGEBRAICOS DE LA CONGRUENCIA: ARITMÉTICA MODULAR 71 que an = b (con la potenciación en Zm ) si, y sólo si, an ≡m b (con la potenciación en Z). Se tiene también que n an1 +n2 = an1 ×m an2 y que (an1 ) 2 = an1 n2 . 4 Por ejemplo, en Z6 , es 3 = 3. Obsérvese que, en Z6 , 3n = 3 cualquiera sea n ∈ Z+ . En Z5 , es 32 = 4, 33 = 2 4 y 3 = 1. En Z13 , es 52 = 12, y 54 = 1. También en Z13 , 22 = 4, 24 = 3, 28 = 9 y 212 = 1. Podemos invertir más tiempo eligiendo números de Z13 y viendo que, para cada uno de ellos, alguna potencia positiva da 1 (salvo 0, pues 0n = 0 cualquiera sea n ∈ Z+ ). Lo mismo pasa en Z5 , y, si hacemos la prueba, en cualquier Zp que se nos ocurra tomar, con p primo. Conjeturamos entonces que, para p primo, se tiene que ∀a ∈ Zp − {0} , ∃n ∈ Z+ : an = 1 (con la operación de producto módulo p). Y efectivamente así es. Está demostrado en el siguiente teorema. Teorema 5.49. Sean p un primo positivo y a ∈ Zp − {0}. Entonces, existe un entero positivo n tal que an = 1 (en la aritmética de Zp ). Demostración. Consideremos la sucesión de las potencias positivas de a en Zp : a1 , a2 , a3 , . . . Dado que todas ellas son elementos de Zp , deben existir enteros positivos i < j tales que ai = aj . Multipliquemos a ambos miembros de esta igualdad en Zp por la i-ésima potencia del inverso de a (que sabemos que existe pues a 6= 0 i i y p es primo). Nos queda entonces que aj ×p a−1 = ai ×p a−1 . Por la asociatividad del producto en Zp , tenemos que aj−i = 1 con j − i entero positivo, lo cual muestra la aseveración del teorema. Corolario 5.50. Sea p primo positivo y a ∈ Z. Si p no es factor de a, entonces existe n ∈ Z+ tal que a ≡p 1 (en la aritmética de Z). n Demostración. Sea d = r (a, p). Como p no divide a a, es d 6= 0. Luego, d ∈ Zp − {0}. Ya que p es primo, existe n ∈ Z+ tal que dn = 1 (con la potenciación definida para Zp ). Esto quiere decir que, con la potenciación de números enteros, es dn ≡p 1. Ya que a ≡p d, del corolario 5.14 se tiene que an ≡p dn y por transitividad de la congruencia, es an ≡p 1. El teorema 5.49 garantiza, para cada a ∈ Zp − {0}, la existencia de un n ∈ Z+ que cumple la propiedad de que an = 1. Podemos sospechar que tal n depende de a. Por ejemplo, en Z13 , 54 = 1 pero 34 6= 1. Vemos que un n que funcione para a ∈ Zp − {0} puede no cumplir que bn ≡p 1 para algún b 6= a. Sin embargo, hay un n que anda bien con todo elemento. En realidad son varios, pero hay uno famoso. Lema 5.51. Sean p primo positivo, a ∈ Zp − {0} y j, k ∈ Zp . Si j 6= k, entonces a ×p j 6= a ×p k. Demostración. Demostraremos la contrarrecíproca. Supongamos a ×p j = a ×p k. Como p es primo y a 6= 0, existe a−1 ∈ Zp − {0}, por lo que, multiplicando módulo p a ambos miembros de la igualdad por a−1 , quedamos con que j = k. Teorema 5.52. Sea p primo positivo. Entonces, ∀a ∈ Zp − {0}, ap−1 = 1 (en la aritmética de Zp ). Demostración. Sea a ∈ Zp − {0}. Hagamos M = {k ×p a : k ∈ Zp − {0}}, que, en virtud del lema 5.51, tiene p − 1 elementos, y de la proposición 5.37 ninguno de ellos es 0. Luego, M ⊂ Zp − {0}; el único subconjunto de Zp − {0} con p − 1 elementos es el propio Zp − {0}. Luego, debe ser M = Zp − {0}. Por lo tanto, multiplicar todos los números que hay en M (con el producto de Zp ) es lo mismo que multiplicar todos los elementos de Zp − {0} (con su aritmética). De allí que (a ×p 1) ×p (a ×p 2) ×p · · · ×p (a ×p (p − 1)) = 1 ×p 2 ×p · · · ×p (p − 1) Sea k = 1 ×p 2 ×p · · · ×p (p − 1). De lo anterior, tenemos que k ×p ap−1 = k. Como ningún factor en k es 0, tenemos que k 6= 0 (proposición 5.37), y entonces existe k −1 ∈ Zp − {0}, que, multiplicado módulo p a ambos miembros de la igualdad anterior, produce ap−1 = 1 en la aritmética de Zp . Corolario 5.53. (Pequeño Teorema de Fermat) Sea p un primo positivo, y sea a un entero que no es múltiplo de p. Entonces, ap−1 ≡p 1. Demostración. Sea d = r (a, p). Se tiene que d ∈ Zp − {0}, por lo que en Zp es dp−1 = 1. Esto significa que, en la aritmética de los enteros, dp−1 ≡p 1. Como a ≡p d, tenemos que ap−1 ≡p dp−1 (corolario 5.14), y por transitividad de la congruencia módulo p es ap−1 ≡p 1. Corolario 5.54. Sea p un primo positivo. Entonces, ∀a ∈ Z, ap ≡p a. Demostración. Sea a ∈ Z. Si p no es factor de a, por el Pequeño Teorema tenemos que ap−1 ≡p 1, por lo que ap ≡p a (lema 5.12). Si p es factor de a, es a ≡p 0, y p | ap , por lo que ap ≡p 0. Entonces, por transitividad de la congruencia módulo p, es también en este caso ap ≡p a. Corolario 5.55. Si p es primo positivo y a ∈ Zp − {0}, entonces a−1 = ap−2 . Demostración. a ×p ap−2 = ap−1 = 1. 72 5. CONGRUENCIAS Corolario 5.56. Sean p primo positivo y a, b ∈ Z. Si p no es factor de a, entonces el conjunto solución de la ecuación lineal de congruencia ax ≡p b es el conjunto de todos los enteros congruentes módulo p a ap−2 b. Demostración. aap−2 b = ap−1 b ≡p 1·b = b, por lo que ap−2 b es una solución a la ecuación de congruencia. Por el teorema 5.22, se sigue el resultado. Apéndice A USO DEL SOFTWARE “MAPLE” En este apéndice se tratará de guiar al lector para dar unos primeros pasos en el uso del software Maple (versión 7.00), con el objetivo de implementar los algoritmos dados en el presente texto. No se pretende explorar toda la riqueza de ese excelente programa, sino sólo instruir mínimamente en la manera de programar en la notación algorítmica que hemos presentado. Sería deseable que, con este puntapié inicial, el lector se anime a usar el software para investigar sobre muchas conjeturas en el reino de los número enteros, y, por qué no, a formular las suyas propias (ojalá que también pueda probar analíticamente... ¡algunas de las que sean ciertas!). Para poder usar el software Maple, éste debe estar previamente instalado en la computadora de trabajo. Para invocarlo, se debe hacer doble clic en el ícono correspondiente. Se abre entonces una ventana blanca de edición (posiblemente junto a otras más que no interesan ahora) y entramos al maravilloso mundo de dar órdenes y, si las mismas tienen sentido, ver cómo son cumplidas. El signo > y, a su lado, el símbolo del cursor parpadeante, indican que Maple espera de nosotros una instrucción. La correspondiente respuesta, de haberla, se observará en azul. Para dar una instrucción al programa con el objeto de que éste la ejecute, primero debe tipearse en pantalla dicha instrucción, seguida por el símbolo de punto y coma (;) o bien por el de dos puntos (:). En ambos casos la instrucción se ejecuta, imprimiéndose una respuesta si se terminó con ;. Durante el tipeo de la instrucción, hay que tener cuidado con la distinción entre mayúsculas y minúsculas, ya que Maple es sensible a este hecho. Por ejemplo, tipear un comando como “return” es muy distinto de tipear “Return”. Una vez finalizado el tipeo de una instrucción, la misma se ejecuta presionando la tecla Enter. Enter, traducido a un lenguaje coloquial, sería como “¡Hacé lo que te acabo de decir!”. Presionar simultáneamente las teclas Shift y Enter producirá un cambio en la línea de edición (recurso muchas veces usado para hacer más clara y legible la instrucción que se está tipeando). Maple no interpretará Shift+Enter como orden de ejecución de la instrucción. Igualmente, el uso de sangría permite escribir códigos legibles, y muchas veces se recomienda apelar al mismo. Veremos después algunos ejemplos. A continuación, daremos una manera de implementar en Maple los distintos tipos de instrucciones vistas en la sección Notación Algorítmica del Capítulo 2 y empleadas en varias partes de este libro. Instrucciones de asignación. Tipear el nombre de la variable, seguido del signo := y luego la expresión que define el nuevo valor de la variable (casi igual que en la notación algorítmica, excepto que omitimos la palabra sea). Por ejemplo, x:=5; Luego de presionar Enter, la variable x queda con el valor 5. Podemos recuperar, durante la sesión, el valor de la variable poniendo el nombre de la misma seguida de ; y luego Enter. Para asignar valores a varias variables simultáneamente, se debe tipear las variables separadas por comas, luego :=, luego los valores para cada una separados por comas, y finalmente ;. Por ejemplo, al hacer x,z:=4,5; la variable x queda valiendo 4, y la z queda con 5. Importantísimo: El símbolo := es el operador de asignación. En la implementación de algoritmos, muchas veces queremos saber si una variable tiene un cierto valor (por ejemplo, si la variable x vale 5). Para hacerlo, debemos usar el símbolo =, que es un operador de comparación. Por ejemplo, al ejecutar en un programa la comparación x=5 se obtendrá true (verdadero) si la variable x efectivamente tiene almacenado un 5, y false (falso) en caso contrario. Otros operadores de comparación: > < >= <= <> (éste último significa “distinto de”). Instrucción de retorno. La instrucción contestar expresión se logra en Maple tipeando return expresión; Por ejemplo, return 10*c; producirá que se conteste el valor que resulte de multiplicar por 10 lo que tenga asignada la variable c. 73 74 A. USO DEL SOFTWARE “MAPLE” Está permitido que la expresión a contestar sea una sucesión de dos o más elementos, que deberán ir separados por comas. Por ejemplo, return c,r; contestará una sucesión de dos números: el primero con el valor de la variable c y el segundo con el de r. Instrucciones condicionales. Recordemos que, en nuestra notación algorítmica, las mismas responden al siguiente esquema: si (condición) lista1 sino lista2 En Maple, se logran tipeando lo siguiente: if condición then lista1 else lista2 end if; (y si no hay lista2, tipear if condición then lista1 end if;). Por ejemplo, la instrucción condicional si (r = 0) sea a = 2 sino sea a = 5 se implementa en Maple así: if r=0 then a:=2 else a:=5 end if; Si la condición es una proposición compuesta en donde aparecen conjunciones y disyunciones de proposiciones simples, se debe usar “and” para “y”, y “or” para “o”. Por ejemplo, para implementar en Maple la instrucción condicional si (r ≥ 7 y r ≤ 23) o r > 50 sea a = 2 sino sea a = 5 debe tipearse: If (r>=7 and r<=23) or r>50 then a:=2 else a:=5 end if; Recordemos que lista1 y/o lista2 pueden estar constituidas por varias instrucciones. Al implementar en Maple, es mejor que cada una de esas instrucciones (excepto la última) terminen con (:). En este caso, lo mejor (aunque no obligatorio) es poner una instrucción por línea (pulsando Shift Enter para cambiar de línea), y emplear sangría en el editor (para claridad). Por ejemplo, a continuación mostramos a la izquierda un pseudocódigo, y a la derecha una posible implementación. en pseudocódigo: si (r = 0) sea a = 2 sea b = a2 sea c = a − 2b sino sea a = r sea b = r3 − 2 en Maple: if r=0 then a:=2: b:=a^2: c:=a-2*b else a:=r: b:=r^3-2 end if Es de destacar que la instrucción no cambia si la tipeamos así: if r=0 then a:=2:b:=a^2:c:=a-2*b else a:=r:b:=r^3-2 end if pero se lee más fácil si las cosas se acomodan como hemos mostrado más arriba. Declaración e invocación de funciones. Para declarar una función de una sola variable en Maple, la mejor manera de hacerlo es la siguiente: Nombre de la funcion:=proc(nombre del argumento) . . . end proc; (Los puntos en vertical representan las sucesivas instrucciones que componen la función.) Por ejemplo, la siguiente función eleva al cuadrado: cuadrado:=proc(x) return x^2 end proc; Si en la implementación se usarán variables auxiliares intermedias para la evaluación de la función, es mejor declararlas al principio, comenzando con la palabra local seguida de los nombres de las variables separadas por comas, y finalizando con dos puntos. Por ejemplo, para declarar las variables auxiliares a,b,c: A. USO DEL SOFTWARE “MAPLE” 75 Nombre de la funcion:=proc(nombre del argumento) local a,b,c: . . . end proc; Ninguna de estas variables “locales” puede llamarse igual que el argumento de la función. Como antes, es mejor que la lista de instrucciones tenga una instrucción por línea, y es obligatorio que cada instrucción (excepto la última) termine por un signo de dos puntos (:). Luego de cada :, debe apretarse Shift Enter, para cambiar de línea en el tipeo. El Enter únicamente debe pulsarse después de haber escrito el end proc; final, luego de la última instrucción, para dar a entender al programa que allí terminó la definición de la función. Maple entonces hace un chequeo de sintaxis, mostrando errores si los hay. Si no los hay, la función declarada ya está disponible para su invocación. Veamos un ejemplo de implementación: en pseudocódigo: h(x) = sea n = x − 20 si (n > 2x) contestar 3n sino sea n = n · x si (n < 400) contestar 1 − nx sino contestar x2 en Maple: h:=proc(x) local n: n:=x-20; if n>2*x then return 3*n else n=n*x: if n<400 then return 1-n*x else return x^2 end if end if end proc; Si una función tiene más de un argumento, deben colocarse sus nombres separados por comas. Por ejemplo: en pseudocódigo: máx(x, y) = si (x ≥ y) contestar x sino contestar y en Maple: max:=proc(x,y) if x>=y then return x else return y end if end proc; Una vez declarada, una función se puede invocar con valores concretos para sus argumentos. Se coloca para ello el nombre de la función y los valores de los argumentos entre paréntesis, separados por comas, terminando con punto y coma. Usando nuestras implementaciones anteriores, para calcular cuál es el mayor entre los números −5 y −2, podríamos ejecutar max(-5,-2); (recibiendo como respuesta −2), o para saber el cuadrado de 7 podríamos ejecutar cuadrado(7); (recibiendo como respuesta 49). Si una función contiene llamadas a funciones hijas, mejor no invocar a la madre hasta que tengamos todas las funciones hijas ya implementadas. En este caso, hay que ir haciendo Enter al terminar de definir cada función (la madre y las hijas). Recién entonces se podrá invocar a la madre sin sorpresas. Algunos ejemplos. Seguidamente, mostramos implementaciones de varias de las funciones que aparecieron en este texto. Cociente y resto de naturales, algoritmo ineficiente: cr:=proc(a,b) local c,r: if a<b then return 0,a else c,r:=cr(a-b,b): return 1+c,r end if end proc; Cociente y resto de naturales, algoritmo más eficiente (exige tener implementado el de más arriba, pues lo invoca): cr10:=proc(a,b) local c,r,c1,r1: if a<b then return 0,a else c,r:=cr10(a,10*b): 76 A. USO DEL SOFTWARE “MAPLE” c1,r1:=cr(r,b): return 10*c+c1,r1 end if end proc; Cociente y resto de enteros, usando el de naturales (se usa también la función abs, ya implementada en Maple, que devuelve el valor absoluto): crent:=proc(a,b) local c,r: c,r:=cr10(abs(a),abs(b)): if a>=0 then if b>0 then return c,r else return -c,r end if else if b>0 then if r=0 then return -c,0 else return -c-1,b-r end if else if r=0 then return c,0 else return c+1,-b-r end if end if end if end proc; Podemos utilizar la función anterior para calcular individualmente cociente y resto del entero a dividido por el entero b, así: cent:=proc(a,b) local c,r: c,r:=crent(a,b): return c end proc; rent:=proc(a,b) local c,r: c,r:=crent(a,b): return r end proc; Decisión de primalidad de un número entero. Una respuesta true significa que el argumento es un número primo, mientras que false significa que no. primo:=proc(a) if abs(a)<=1 then return false else if rent(a,2)=0 then if abs(a)=2 then return true else return false end if else return probarfactor(abs(a),3) end if end if end proc; probarfactor:=proc(n,f) if f^2>n then return true else if rent(n,f)=0 then return false else return probarfactor(n,f+2) end if end if end proc; Máximo común divisor entre dos enteros, algoritmo de Euclides: mcdeucl:=proc(a,b) if b=0 then return abs(a) else return mcdeucl(b,rent(a,b)) end if end proc; Algoritmo extendido de Euclides: euclext:=proc(a,b) local c,r,s1,t1,g: if b=0 then return cent(abs(a),a),0,abs(a) A. USO DEL SOFTWARE “MAPLE” 77 else c,r:=crent(a,b): s1,t1,g:=euclext(b,r): return t1,s1-t1*c,g end if end proc; Manejo de listas. Para Maple, las uplas ordenadas se representan mediante listas de elementos separados por comas y delimitados por corchetes. Por ejemplo, [5,3,2,5] corresponde a la cuaterna (5, 3, 2, 5). Con la misma naturalidad con que con una sola letra representamos todo un conjunto, en Maple podemos asignar a una variable toda una lista. Por ejemplo, para la lista anterior podemos poner a:=[5,3,2,5]; Incluso está permitida la lista vacía: [], es decir, una lista sin elementos. Podemos acceder a los elementos de una lista poniendo el nombre de la misma y el número de orden del término que nos interesa, entre corchetes. Por ejemplo, para nuestra lista a de arriba, a[3] vale 2. Algunas observaciones sobre cómo manipular listas en Maple: La longitud de la lista (es decir, el número de términos que contiene) se obtiene con la función nops. Por ejemplo, nops(a) da el número de elementos de la lista a (si a=[5,3,2,5], nops(a) contesta 4; nops([]) devuelve 0, pues la lista vacía no tiene elementos). op(a) da la sucesión de elementos de la lista a sin los corchetes (si a=[5,3,2,5], op(a) contesta 5,3,2,5). La subsucesión de una lista a que va desde la posición i hasta la posición j se obtiene con op(i..j,a) (en nuestro ejemplo, op(2..3,a) corresponde a la sucesión 3,2). En particular, la lista que resulta de eliminar el primer elemento de una lista a se obtiene con [op(2..nops(a),a)]. El operador de concatenación es la coma. La concatenación de los elementos de la lista a con los de la lista b en una nueva lista se hace mediante [op(a),op(b)]. Como caso particular, si se tiene dada una lista a y se desea crear una nueva lista que sea la misma que a excepto que con el elemento n al principio, se puede hacer [n,op(a)] para crearla. Por ejemplo, si a es [5,3,2,5], [9,op(a)] dará la lista [9,5,3,2,5] (la lista a queda como estaba, pues no se le asignó un nuevo valor con esta operación). Con esto, estamos en condiciones de implementar dos importantes algoritmos más: Máximo común divisor entre varios números enteros: mcdeuclista:=proc(a) if nops(a)=1 then return a[1] else return mcdeucl(a[1],mcdeuclista([op(2..nops(a),a)])) end if end proc; Ejemplo de invocación: mcdeuclista([14,18,12,27]);. Resolución de un sistema de dos congruencias: res2cong:=proc(a1,a2,m1,m2) local s,t,g,c,r: s,t,g:=euclext(m2,m1): c,r:=crent(a1-a2,g): if r=0 then return rent(a2+m2*s*c,cent(m1*m2,g)) end if end proc; Ejemplo de invocación: res2cong(4,8,13,27);. Resolución de un sistema de varias congruencias: chino:=proc(a,m) local na,nm: if nops(a)=1 then return a[1] else na:=[res2cong(a[1],a[2],m[1],m[2]),op(2..nops(a),a)]: nm:=[m[1]*m[2],op(2..nops(m),m)]: return chino(na,nm) end if end proc; Ejemplo de invocación: chino([4,8,7],[13,27,16]);. 78 A. USO DEL SOFTWARE “MAPLE” Cadenas de texto y códigos ASCII. Para Maple, una cadena de texto es una sucesión de letras y símbolos encerrados entre comillas. Por ejemplo T:="Abba"; asigna a la variable T la cadena Abba. Antes de trabajar con cadenas de texto, conviene cargar un subpaquete predefinido de Maple (que contiene muchas funciones útiles, en particular, los códigos ASCII) haciendo with(StringTools):. Si T es una cadena de texto, su longitud se obtiene mediante length(T), y su i-ésimo carácter mediante T[i]. Más generalmente, substring(T,i..j) corresponde a la subcadena de T comprendida entre las posiciones i y j (ambas inclusive). Por ejemplo, substring("Abba",2..3) corresponde a "bb". La concatenación de dos o más cadenas se hace con la función cat que tiene como argumentos las cadenas a concatenar separadas por comas. Por ejemplo, cat("ab","cdef","gh") produce la cadena "abcdefgh". El código ASCII de un símbolo se obtiene haciendo Ord con el símbolo entre comillas y todo entre paréntesis. Por ejemplo, Ord("a") contesta 97. El carácter que corresponde a un código n (0 ≤ n < 256) se obtiene con Char y n encerrado entre paréntesis. Por ejemplo, Char(97) contesta "a".