다음 코드를 통해 예시를 살펴보자.
public class Solution {
public String computeSquareRoot(int num) {
// 바빌로니아 법 정밀도 상수 (높을수록 정밀해짐)
final int PRECISION = 10;
double x = PRECISION;
for (int i = 0; i < PRECISION; i++) {
x = 0.5 * (num / x + x);
}
// 바빌로니아 법을 통한 제곱근을 소수점 두 자리까지 반환
return String.format("%.2f", x);
}
}
여기서, PRECISION 변수가 높은 수를 가질수록, 근삿값의 정밀도는 올라간다.
또, 바빌로니아 법의 점화식은 다음 코드 구문이라고 생각하면 된다.
x = 0.5 * (num / x + x);
(여기서, num에는 제곱근을 구할 수를 입력하면 된다.)
Java에는 Math.sqrt()라는 메서드를 통해, 특정한 수의 제곱근을 구할 수 있지만,
바빌로니아 법의 점화식을 통해, 제곱근의 근삿값을 구할 수도 있다.
Ref)
https://ko.wikipedia.org/wiki/%EB%B0%94%EB%B9%8C%EB%A1%9C%EB%8B%88%EC%95%84_%EB%B2%95
'Develop > Algorithm' 카테고리의 다른 글
Java) 버블 정렬(Bubble Sort) 알고리즘 (0) | 2022.10.20 |
---|---|
Java) 피보나치 수열 + Advanced (0) | 2022.10.20 |
시간복잡도 (0) | 2022.09.28 |
그래프(Graph) 구조 (0) | 2022.09.24 |
트리(Tree) 구조 (0) | 2022.09.24 |