• Viernes 15 de Noviembre de 2024, 00:03

Autor Tema:  Re: Algoritmo de Euclides  (Leído 5031 veces)

phoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Algoritmo de Euclides
« en: Martes 7 de Mayo de 2002, 04:18 »
0
Hola, me puedes resolver el problema de algoritmo de Euclides usando técnicas recursivas y no recursivas.
Muchas gracias.

dheak

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: Algoritmo de Euclides
« Respuesta #1 en: Sábado 11 de Mayo de 2002, 19:41 »
0
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

phoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Algoritmo de Euclides
« Respuesta #2 en: Lunes 13 de Mayo de 2002, 00:08 »
0
Hola dheak, ya pase a C , he probado con técnicas no recursivas pero, siempre, me dio como resultado de la funcion mcd(a,b) es 1. Esto esta bien?
Por qué no podes arreglar bien?
Disculpe las molestías. Muchas gracias
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

dheak

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: Algoritmo de Euclides
« Respuesta #3 en: Lunes 13 de Mayo de 2002, 01:20 »
0
me parece extraño que no te funcionase y mas que siempre te de uno (quiza es que todos las pruebas que has hecho las has hecho con numeros coprimeros). Lo acabo de compilar (con gcc pero debe funcionar en todos, es codigo ANSI C) y ha funcionado perfectamente. No se que puede haber pasado. Aqui te mando mi codigo, pero es exactamente igual. Tambien he probao el tuyo (cambiando el cout y cin por printf y scanf) y funciona perfectamente. Pos no se. Prueba de compilar esto y te debe funcionar.

Saludos.

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>

int mcd(int a, int b);

int main(int argc, char *argv[])
{
   int a, b;
   printf("Introduce el primer numero: ");
   scanf("%d", &a);
   printf("nIntroduce el segundo numero: ");
   scanf("%d", &b);
   printf("nEl mcd de %d y %d es: %d", a,b,mcd(a,b));
   return EXIT_SUCCESS;
}

int mcd(int a, int b)
{
   while (a != b)
   {
      if (a > b)
         a = a - b;
      else
         b = b - a;
   }
   return a;
}

^[HaDeS]^

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Algoritmo de Euclides
« Respuesta #4 en: Jueves 16 de Mayo de 2002, 22:31 »
0
La mejor forma forma de realizar el algoritmo de Euclides es la siguiente manera:


#include <iostream.h>

manip(int n1, int n2)
{   
   int resto, cociente;
   if(n2==0) cout << "MCD = " << n1;
   else {
   cociente = n1/n2;
   resto = n2*cociente - n1;
   manip(n2,resto);
   }
   
   return 0;
}


main()
{
   int a,b;
   cout << "¿Numero1?";
   cin >> a;
   cout << "¿Numero2?";
   cin >> b;
   if(a==0 && b==0) cout << "Error";
   if(a > b) manip(a,b);
   else manip(b,a);
   return 0;
}

gmlocarlos

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Algoritmo de Euclides
« Respuesta #5 en: Lunes 11 de Octubre de 2010, 09:37 »
0
en el siguiente enlace puedes ver el algoritmo de euclides implementado en C++ , saludos
site-informatica.blogspot.com/2010/09/algoritmo-de-euclides.html