유클리드 호제법 질문좀
가시
질문 제목 : 유클리드 호제법 질문좀요;; 값이 안나오네요...
질문 내용 :
#include stdio.h
int divine(int a,int b);
int main(void)
{
int a,b;
for(;;)
{
printf(input the natural number : );
scanf(%d %d,&a,&b);
if(a0 && b0)
{
printf(g m c is %d\n,divine(a,b));
break;
}
else
continue;
}
return 0;
}
int divine(int a,int b)
{
int r1,r2;
if(ab)
{
int e;
e=a,a=b,b=e;
}
r1=a%b;
for(;r2==0;)
{
r2=b%r1;
b=r1;
r1=r2;
}
return b;
}
아무리 봐도 맞는거 같은데 그냥 입력한 두숫자 중에 작은 수가 그냥 출력되네요유클리드 호제법 하는건데 뭐가 잘못됫는지좀 찝어 주세요
인터넷에서 검색하면c = b / d; /*b를 d로 나눈 몫이 c이고*/
d = b % d; /*d에다가 b를 d로 나눈 나머지를 대입하고*/
b = (b - d) / c; /*b에다가 (b-d) /c값을 대입*/
} /*유클리드 호제법입니다. 모르시면 공부하세요*/이게 나오는데 c = b / d; /*b를 d로 나눈 몫이 c이고*/ 여기서 몫은 왜 필요하고
b = (b - d) / c 이 식은 왜 써야 되는지를 모르겠네요유클리드 호제법이a랑 b랑 있을때 r1=a%b 일때 b랑 r이랑 나누고 거기서 생긴 r2=b%r1 이고다시 r3=r1%r2 이렇게 반복했을때 나머지가 0이 되는순간 그때의 나눈 b를 구하는거 아닌가요예를 들어 12와 18로 따지면 6=18%12 , 0=12%6 그래서 나머지가 0이 되는 순간의 값 6이12와 18의 최대공약수 아닌가요;;;아 머리아파