JavaScript_바빌로니아_Math.sqrt()없이 제곱근 구하기

Eugenius1st·2022년 8월 12일
0

JavaScript

목록 보기
37/67
post-thumbnail

JavaScript_바빌로니아_Math.sqrt()없이 제곱근 구하기

바빌로니아 방법(Babylonian method)

여기서 Xn은 말 그래도 근사값이다.
S에 루트를 씌운 값에 가장 가까울거라 생각하는 근사값을 넣어주면 된다.

어떤 값을 넣든지 점화식을 반복하면 결국, Xn+1 이 S의 제곱근에 근접하는 순간이 온다.

수도코드

let 근사값 = 원래숫자 / 2
while((근사값**2) !== 원래숫자){
	근사값 = (근사값 + (원래숫자/근사값))/2
}

코드

시간초과 문제 발생. 근사값이 3.xxxxxxxxxx형식을 넘지 못함

let origin = 9;
let approxNum = origin / 2; // 4.5
while((approxNum**2) !== origin){
	approxNum = (approxNum + (origin/approxNum))/2;//3.25
}

제곱근이 정수로 떨어지는 숫자 이외의 값을 입력받으면 while문이 무한반복. break 필요
그 조건은 소수점 자리를 지정해 그 값을 끊어 계산

해결방안 approx.toFixed(소수점자리수)

문제 해결 최종 코드

let origin = 9;
let approxNum = origin / 2;
while((approxNum**2) !== origin){
  if(Number((approxNum**2).toFixed(2))===origin){
  break;
  }
	approxNum = (approxNum + (origin/approxNum))/2; 
}
  return (approxNum**2).toFixed(2);
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글