algorytm euklidesa

0

witam ! dopiero zaczynam przygode z programowaniem i chciałem sobie poćwiczyć na algorytmie euklidesa. Oto co stworzyłem:

[code]
#include <stdio.h>

int a,b,A,B,r;

void modulo(void)
{
r=A%B;
}

int main(void)
{
printf("Algorytm Euklidesa\n\nPodaj 2 liczby, ktorych NWD chcesz wyliczyc:\n");
scanf("%d%d",&a,&b);
if (a>=b)
{
A=b;
B=a;
}
else
{
A=a;
B=b;
}

 modulo();
 
 if (r>0)
  {
	 A=B;
	 B=r;
	 modulo();
  }
 else
  {
	printf("NWD(%d %d) = %d\n",a,b,B);
  }	  

 

return 0;
}
[/code]

wszystko pięknie, kompiluje się bez błędów, działa bez zarzutu tylko że nic nie zwraca ;] Odpalam i juz :( Co może być nie tak ? bo ja nie wiem :(

pozdro

1

nie if a while ;p
algorytm euklidesa polega na dzieleniu modulo az reszta z dzielenia nie bedzie rowna 0
a ty nie masz petli tylko jeden if ;p
najleprostsza imho implementacja wyglada tak

int NWD( int x, int y )
{
  int r;
  do
  {
    r = x % y;
    x = y;
    y = r;
  }
  while( y );
  return x;
}
0

Tak tak ;-) ja Jestem bardzo newbie więc takie rzeczy się zdarzają :)
(no wiem na czym ten Algorytm polega ;) ) . Tylko że z tego co widać, aby się zapętlało trzeba uŻyć pętli ;p niby logiczne.. a jednak ;]
jeżeli spojrzysz na ten kod to wydaje się że powinien powtórzyć działa..... a nie ;P nie powinien ;] Teraz zauważyłem już czemu (autentycznie ;> )

dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1