💡 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘
- 큰 수를 작은 수로 나누어 떨어지게 하여 수를 반복적으로 취하여 나머지 0이 될 때까지 작동하는 방법 → 최대공약수
- 최대 공약수
- 두 수의 공통된 “약수 중에서 가장 큰 수”
- 재귀 방식
// 재귀 방식 public static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); }
- 반복문 방식
// 반복문 방식 public static int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; }
- 재귀 방식
- 두 수의 공통된 “약수 중에서 가장 큰 수”
- 최소 공배수
- 두 수의 공통된 “배수 중에서 가장 작은 수”
public static int lcm(int a, int b) { return a * b / gcd(a, b); }
- 약수 구하기
int n = 12; // 약수를 구할 수
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
System.out.println(i);
}
}
'CS 지식 > [알고리즘]' 카테고리의 다른 글
[알고리즘] 브루트포스 (0) | 2023.10.20 |
---|---|
[알고리즘]합병 정렬(병합 정렬(Merge Sort)) (0) | 2023.07.18 |
[알고리즘] 선택 정렬(Selection Sort) (0) | 2023.07.18 |
[알고리즘] 버블 정렬(Bubble Sort) (0) | 2023.07.18 |
[알고리즘]퀵 정렬(Quick Sort) (0) | 2023.07.18 |