U E D R , A S I H C RSS

최대공약수/허아영

소 감

ver.1

if(x1 < x2) // 이 부분이 꼭 필요하지 않다고 문득 느낌..
{
int temp;
temp = x1;
x1 = x2;
x1 = temp;
}

ver.2

이거 짜면서 ver.1까지 새로 짰다.
잘못된 변수로 print한 것을 발견..
  • 처음부터 x,y값을 프린트하고 그 값을 계속 쓰는 방법, 그리고
프로그램의 마지막 부분에서 원래 값을 프린트하고 그의 복사본으로 GCD를 계산하는 방법이 있다는 것을 알았다.
나는 후자를 선택했다.

소스

ver.1

~cpp 
#include <stdio.h>

void main()
{
	int x2, y2, x, y,remainder; 
	printf("두 숫자 입력 (ex| 5 6):");
	scanf("%d %d", &x, &y);
	x2 = x;
	y2 = y; //y값을 y2를 이용해 사용. 
	if(y2 < x2) 
	{
		int temp;
		temp = x2;
		x2 = y2;
		x2 = temp;
	}
	// 유클리드 호제법
	while(y2 != 0){
		remainder = x2 % y2; // x2= 나눠질 값. y2= 나누는 값. remainder= 나머지.
		x2 = y2;
		y2 = remainder;
	}
	printf("x = %d, y = %d\n GCD is %d", x, y, x2);
}

ver.2

~cpp 
#include <stdio.h>

void Eu_clidian(int x, int y);
void main()
{
	int x, y; 
	printf("두 숫자 입력 (ex| 5 6):");
	scanf("%d %d", &x, &y);
	Eu_clidian(x, y);
}
void Eu_clidian(int x, int y)
{
	int x2, y2, remainder;
	x2 = x;
	y2 = y;
	while(y2 != 0){ // 유클리드 호제법
		remainder = x2 % y2;
		x2 = y2;
		y2 = remainder;
	}
	printf("The GCD of %d and %d is %d\n", x, y, x2);
}

나한테 할 말

아.. 글고보니 정말로 꼭 첫번째 값이 클 필요는 없겠네.. 아 이거 헤깔려 죽겠드라 ㄱ-;;;; - 김태훈zyint
의외로 헷갈렸지-.ㅜ - 아영

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0885 sec