Académique Documents
Professionnel Documents
Culture Documents
NACIONAL
FACULTAD DE INGENIERIA EN
ELECTRICA Y ELCTRONICA
MATEMATICA DISCRETA
URQUIZA LUIS FELIPE
GRUPO 1
Trabajo
1. Demostracion de algoritmo de Euclides extendido
La extencion del algoritmo de euclides es muy utilizada para determonar una exprecion con-
creta para el maximo comun divisor de cualquier enteros a y b.
Podemos definir a un entero d como una combinacion lineal de enteros a y b si y solo si existen
enteros s y t tales que as + bt = d.
Entonces para todos los enteros a y b diferentes de 0, si d = M CD(a, b), entonces existen enteros
s y t tales que as + bt = d.
Sean enteros a y b diferentes de 0 y dado d = M CD(a, b),sea
S = {x|x es un entero positivo y x = as + bt para algunos enteros s y t}.
Sabemos que S es un conjunto no vacio ya que (1) si a > 0 entonces 1.a + 0.b ∈ S,
(2) si a < 0 entonces (−1).a + 0.b ∈ S y (3) si a = 0 entonces por supocicion b 6= 0 y por tanto
0.a + 1.b ∈ S o 0.a + (−1).b ∈ S,Como S es un subconjunto no vacios de enteros positivos, entonces
hay un elemento minimo c en S.
Por definicion de S.
c = as + bt para algunos enteros s y t,
Entonces tendremos que demostrar que (1) c ≥ d y (2) c ≤ d entonces se concluye que c = d =
M CD(a, b).
Pero xs + yt es un entero por que e suna suma de productos de enteros. Asi por definicion de
divisibilidad ,d|c. Tanto c como d son positivos y por tanto c ≥ d.
2. Codigo en c
#i n c l u d e <s t d i o . h>
#include<s t d l i b . h>
long a , b , d , x , y ;
E u c l i e x t e n ( a , b,&d,&x,&y ) ;
p r i n t f ( ”x= %l d y= %l d d= %l d \n” , x , y , d ) ;
}
return ( 0 ) ;
}
void E u c l i e x t e n ( long a , long b , long ∗d , long ∗x , long ∗y ){
long x1 , y1 ;
i f ( b==0){
}
}
Primero debemos de declarar las variables que utilizaremos leemos y guardamos las entradas a
y b se creo una funcion llamada Eucliexten para poder devolver tres valores los cuales son x, y, z
hacemos un procedimiento en el que tres de los parámetros puedan ser modificadas (esto es,
pasamos las variables por referencia, en lugar de por valor. Esta funcion contiene el algoritmo
convencional de euclides, sólo que añadimos los valores iniciales de x y y, y en luego se incluye x,
y y d como parámetros. Entonces calculamos los nuevos valores de x y y, respaldando primero los
valores en x1 y y1.
La parte principal del programa lo encontramos en el instante en donde mandamos a llamar a la
funcion Eucliexten e imprimimos los resultados, todo esto mientras no lleguemos al fin de archivo.
3. Codigo en Python
def eucExt ( a , b ) :
r = [a,b]
s = [1 ,0]
t = [0 ,1]
i = 1
q = [[]]
while ( r [ i ] != 0 ) :
q = q + [ r [ i −1] // r [ i ] ]
r = r + [ r [ i −1] % r [ i ] ]
s = s + [ s [ i −1] − q [ i ] ∗ s [ i ] ]
t = t + [ t [ i −1] − q [ i ] ∗ t [ i ] ]
i = i +1
return ( r [ i −1] , s [ i −1] , t [ i −1])
try :
print ( ” Sean a , ab e n t e r o s \n” )
a = input ( ” I n g r e s a e l v a l o r de a : ” )
print ( ”\ t a =” , a )
b = input ( ” I n g r e s a e l v a l o r de b : ” )
print ( ”\ tb =” , b )
print ( ”\ t x= ” , eucExt ( int ( a ) , int ( b ) ) [ 1 ] )