이번에 분수 계산하는 클래스를 만들면서 약분을 어떻게 해야할까 고민하다가 검색을 해보니 이런 알고리즘이 있더군요.
최대공약수를 구하는 알고리즘으로 유클리드.. 잘은 모르지만 활용만 해봤습니다.
유클리드 호제법(- 互除法, Euclidean algorithm)은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 이는 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며, 기원전 300년경에 쓰인 유클리드의 《원론》 제7권, 명제 1부터 3까지에 해당한다.
출처 : https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
최대공약수가 이렇게 간단한 알고리즘으로 구해진다는게 신기하더라구요
해서 위의 알고리즘을 이용하여 코드를 만들면 이렇게 됩니다.
약분때문에 혼자 한참 골머리 앓았는데.. 간단하네요.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드/Android]레이아웃 숨기기 (0) | 2016.09.19 |
---|---|
[안드로이드/Android]특수문자 입력하기 (0) | 2016.07.22 |
[안드로이드/Android]setTextColor 사용법 (0) | 2016.07.15 |
[안드로이드/Android]랜덤함수, 난수 만들기 (0) | 2016.07.14 |
[안드로이드/Android]안드로이드 Activity 전환 (0) | 2016.07.13 |