Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

(구)boymin

2623 : 최대공약수 구하기 본문

Programming/CodeUp

2623 : 최대공약수 구하기

boymin 2017. 6. 27. 02:39

 문제 설명

 두 정수 a, b를 입력받아서, a, b의 최대공약수를 출력하시오.

 입력

 정수 a, b가 공백으로 구분되어 입력된다. (1<=a, b<=10,000)

 출력

 a, b의 최대공약수를 출력한다.

 입력 예시

 64 128

 출력 예시

 64


최대공약수 구하기 문제.

'유클리드 호제법'이라고 널리 알려진 최대공약수를 구하는 알고리즘이 있다.


/*유클리드 호제법

 : 두 양의 정수 a, b (b>a)에 대하여 b = aq + r (0<=r<a)라 하면, a, b의 최대공약수는 a,r의 최대공약수와 같다. */


인터넷에서 찾아보니 예시 코드들을 찾아볼 수 있었다.


예제 1)


int Euclidean(int a, int b)
{
	return a%b ? Euclidean(b, a%b) : b;
}
/* 출처

예제 2)

#include <stdio.h>
int max(int a,int b);
int main (void)
{
int a,b;
printf("두 수를 입력 하시오");
printf("\n");
scanf("%d%d",&a,&b);
if(a>=b) 
  {
printf("\n");
printf("두 수의 최대공약수 : %d\n",max(a,b));
}
else
  {
printf("\n");
printf("두 수의 최대공약수 : %d\n",max(b,a));
}

}

int max(int a,int b)
{
if(a%b==0) return b; 

else return max(b,a%b);
}

/* 출처

https://m.blog.naver.com/PostView.nhn?blogId=raraduck&logNo=90177228431&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F */


찾아보니 상당히 많은 예시 코드들이 재귀함수로 이루어져 있었다.

재귀함수는 컴퓨터에 무리가 가므로 되도록 사용하지 않는것이 좋다는 얘기를 들어서

재귀함수 없이 유클리드 호제법을 이용한 코드를 짜보았다.



/* 참고 자료

https://ko.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/the-euclidean-algorithm */

'Programming > CodeUp' 카테고리의 다른 글

1167 : 두 번째로 작은 수  (0) 2017.06.24
Comments