본문 바로가기

카테고리 없음

[C++] 최대공약수 구하기

void main()
{
	int m, n, temp;
	err:
	cout << "두 개의 정수를 입력해 주세요 : ";
	cin >> m >> n;

	if((m < 0) || (n < 0))
	{
		cout << "입력값이 잘못되었습니다. 다시 입력해 주세요.\n\n" << endl;
		goto err;
	}

	back:
	if(n > m)
	{
		temp = n;
		n = m;
		m = temp;
	}
	m = m - n;
	if(m != 0)goto back;
	cout << "두 수의 최대공약수는" << n << "입니다." << endl;
}

프로그램 실행화면


최대 공약수를 구해주는 프로그램이다. 입력 받은 두 개의 숫자가 오류 범위인지 먼저 검사를 한다. 오류 범위에 있지 않다면 유클리드 호제법을 이용해서 최대 공약수를 구해주었다.


goto 문을 두번이나 사용했는데 많이 사용하면 좋지는 않다. cpu가 명령어들을 빨리 처리하기 위해 미리 명령어들을 가지고 오는데 goto문을 만나게 되면


미리 받아왔던 것들을 다 지워야 하기 때문에 연산속도도 조금 느려지고 정말 중요한 것은 프로그램이 꼬일 염려가 있기 때문이다. 그래서 goto문을 사용하더라도 멀지 않은 곳에서 사용하는 것이 좋다.