반응형
세 정수의 최대공약수
글. 오상문 sualchi@daum.net
공약수이므로 세 정수 중에서 가장 작은 수보다 클 수 없습니다.
그러므로 세 정수 중에서 가장 작은 수를 구하고 그 수부터 1씩 줄이면서
세 정수가 모두 약수인 경우를 찾으면 최대공약수가 됩니다.
[참고' 가장 큰 최대공약수는 아무리 커봐야 가장 작은 정수값이고,
가장 작은 최대공약수는 아무리 작아봐야 1입니다.
#include <stdio.h>
int min(int a, int b)
{ return (a>b) ? a:b; }
int min3(int a, int b, int c)
{ return min(a,b) ? min(a,c) : min(b,c); }
// 세 정수 중에서 가장 큰 최대공약수를 찾는다.
int gdc3(int a, int b, int c) {
int i, min = min3(a, b, c);
for(i=min; i>1; i--)
if(a%i==0 && b%i==0 && c%i==0)
return i;
return 1;
}
int main()
{
int a = 200, b = 30, c = 50;
printf("%d, %d, %d의 최대공약수: %d\n", a, b, c, gdc3(a, b, c));
return 0;
}
<이상>
반응형
'C' 카테고리의 다른 글
C 언어, 팰린드롬 Palindrome 소스 (0) | 2018.08.27 |
---|---|
C 언어, 피보나치 수열 for 문으로 구하기 (0) | 2018.08.06 |
C 언어, 두 정수 또는 세 정수 중에서 가장 큰 수나 작은 수 찾기 (0) | 2018.08.06 |
C 언어, n 번째 약수 찾기 (0) | 2018.08.05 |
C 언어, 별(*) 문자로 원 그리기 (0) | 2018.08.05 |