최대공약수 (The Greatest Common Denominator(GCD)), 최소공배수(The Least(Lowest) Common Multiple(LCM))
Computer Science/Algorithm 2017. 8. 29. 18:41728x90
728x170
*최대공약수 (The Greatest Common Denominator(GCD)), 최소공배수(The Least(Lowest) Common Multiple(LCM))
# Algorithm 1 : 간단한 방법(Simple Way)을 이용한 최대공약수(GCD) 구하기
1
2
3
4
5
6 |
int min(int a, int b)
{
if (a > b) return b;
else if (a < b) return a;
else return a;
} |
cs |
1
2
3
4
5
6
7
8
9 |
// 간단한 최대공약수 알고리즘 (A simple algorithm of the greatest common denominator(GCD))
int gcd(int m, int n)
{
int g;
for (g = min(m,n); g>=1; g--)
if ((m % g == 0) && (n % g == 0))
return g;
} |
cs |
# Algorithm 2 : 유클리드 호제법(Euclidean Algorithm)을 이용한 최대공약수(GCD) 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
// Euclidean Algorithm
#include <stdio.h>
int gcd(int m, int n) // It is assumed that m <= n.
{
if (m == 0) return n;
else return gcd(n % m, m);
}
void main(void)
{
int m, n; // positive integers
int result; // gcd of m and n
scanf_s("%d", &m);
scanf_s("%d", &n);
if (m <= n) result = gcd(m, n);
else result = gcd(n, m);
printf("%d\n", result);
} |
cs |
+ Algorithm : 최대공약수를 이용한 최소공배수(LCM) 구하기
1 2 3 | int lcm(int a, int b) { return (a * b) / gcd(a, b); } | cs |
728x90
그리드형(광고전용)
'Computer Science > Algorithm' 카테고리의 다른 글
분할 가능 배낭 문제(Fractional Knapsack Problem) (0) | 2021.06.25 |
---|---|
0-1 배낭 문제(0-1 Knapsack Problem) (0) | 2021.06.25 |
최단 작업 우선 스케줄링(Shortest-Job-First Scheduling) (0) | 2021.06.24 |
선형 시간 선택(Linear Time Selection) (0) | 2021.06.07 |
피보나치 수열(Fibonacci Sequence) (0) | 2020.11.11 |
탐욕 알고리즘(Greedy Algorithm) (0) | 2020.08.13 |
Union-Find 알고리즘(서로소 집합 알고리즘) (0) | 2020.06.08 |
알고리즘이란? (0) | 2017.08.29 |