| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- android support
- 안드로이드 DBMS
- db
- support 라이브러리
- android fragment
- java
- 소수 알고리즘
- application not responding
- 깊이우선탐색
- 컬렉션
- 백준
- 알고리즘
- 소수
- android adapterview
- 자바 컬렉션
- BFS
- 안드로이드 파일
- Github
- 안드로이드
- 안드로이드 AdapterView
- 자료구조
- DFS
- oracle
- anr
- SQLite와 Realm 차이점
- 안드로이드 ANR
- support fragment
- 너비우선탐색
- 액티비티 ANR
- 백준 알고리즘
Archives
- Today
- Total
밍의 기록들😉
[수학] 최대공약수(GCD)와 최소공배수(LCM) 구하기 본문
최대공약수(GCD)
- 두 수의 공통된 약수 중에서 가장 큰 정수
- 최대공약수가 1인 두 수는 서로소
코드
private int gcd(int a, int b) {
if(b==0){
return a;
}
else{
return gcd(b, a%b);
}
}- 유클리드 호제법
- a를 b로 나눈 나머지 r
- GCD(a,b) = GCD(b,r)
- r = 0 일 때 b가 최대공약수
재귀함수 사용하여 구현한 코드
private int gcd(int a, int b) {
if(b==0){
return a;
}
else{
return gcd(b, a%b);
}
}재귀함수 사용하지 않고 구현한 코드
private int gcd(int a, int b) {
while(b !=0){
int r = a%b;
a = b;
b = r;
}
return a;
}
최소공배수(LCM)
- 두 수의 공통된 배수 중에서 가장 작은 정수
- 최대공배수는 GCD를 응용해서 구할 수 있음
- 최소공배수 l = g * (a/g) * (b/g)
코드
private int lcm(int a, int b) {
int g = gcd(a,b);
return g*(a/g)*(b/g);
}
'자료구조, 알고리즘 > 기본다지기' 카테고리의 다른 글
| [다이나믹] 팩토리얼 구하기 (0) | 2018.08.20 |
|---|---|
| [수학] 1부터 N까지 소수 구하기(에라토스테네스의 체) (0) | 2018.08.17 |
| [수학] 소인수분해 (0) | 2018.08.16 |
| [수학] 소수 판별하기 (0) | 2018.08.16 |
| [수학] 피보나치 수열 구하기 (0) | 2018.08.14 |
Comments