일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 너비우선탐색
- BFS
- 안드로이드 ANR
- 알고리즘
- 안드로이드 DBMS
- android adapterview
- 소수 알고리즘
- 컬렉션
- DFS
- android support
- db
- Github
- oracle
- anr
- 안드로이드 파일
- android fragment
- 자료구조
- 깊이우선탐색
- 안드로이드 AdapterView
- java
- support fragment
- 안드로이드
- 자바 컬렉션
- 백준
- 소수
- support 라이브러리
- application not responding
- 백준 알고리즘
- SQLite와 Realm 차이점
- 액티비티 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