Hola phoenix, aqui tienes los dos algoritmos que buscabas (bueno, uno pero en sus dos versiones). Imagino que funcionan, el no recursivo lo he probado, compilado, utilizado, etc. y funciona bien. El recursivo no lo he probado (me parece bastante inutil teniendo el otro) pero imagino que tambien funciona (sino funciona dilo). Te lo paso en pseudocodigo, imagino que lo sabras pasar a C, sino dimelo.
Saludos.
funcion mcd(a:entero, b:entero):entero
inicio
mientras ( a != b )
si ( a > b )
a = a - b
sino
b = b - a
fin si
fin mientras
retorna (a)
fin
funcion mcd(a:entero , b:entero):entero
inicio
si (a = b)
retorna (a)
sino
si (a > b)
retorna (mcd(a-b, b))
sino
retorna (mcd(a , b-a))
fin si
fin si
fin