반응형
int num = 1919299;
double n = 1;
while(true){
if(n*n==num){
n=n;
}
else if(n*n>num){
n -= 1;
break;
}
n++;
}
// int count=0;
// double guess = num;
// String result="";
// while (true){
// count++;
// if(count==200){
// result=String.format("%.2f",guess);
// break;
// }
// guess = (guess + (num/guess))/2;
// }
int count=0;
double guess = n;
String result="";
while (true){
count++;
if(count==200){
result=String.format("%.2f",guess);
break;
}
guess = (guess + (num/guess))/2;
}
System.out.println(result);
System.out.println(Math.sqrt(num));
}
}
//출력
1385.39
1385.3876713757777
아래 공식은 바빌로니아 법을 이용해 제곱근을 구하는 식이다
이를 guess = (guess + (num/guess))/2; 를 통해 구현할 수 있고
이 작업을 여러 번 반복하면 guess 값은 제곱근 근삿값에 도달할 수 있다.
이 공식을 적용하기 전에 guess에 num의 제곱근 근사값을 찾아 넣으면 되며,
바빌로니아 공식을 여러번 적용할 경우에는
guess에 num의 제곱근 근삿값을 넣을 필요 없이
guess에 그냥 num의 값을 넣어도 똑같이 제곱근 근삿값을 얻을 수 있다.
int count=0;
double guess = num; // (guess 에 num 넣음)
String result="";
while (true){
count++;
if(count==200){
result=String.format("%.2f",guess);
break;
}
guess = (guess + (num/guess))/2;
}
// int count=0;
// double guess = n; //(guess 에 num의 제곱근 근사값을 넣음)
// String result="";
// while (true){
// count++;
// if(count==200){
// result=String.format("%.2f",guess);
// break;
// }
// guess = (guess + (num/guess))/2;
// }
System.out.println(result);
System.out.println(Math.sqrt(num));
}
}
//출력
1385.39
1385.3876713757777
반응형
'Java > Simple code' 카테고리의 다른 글
Java 소수점 자릿수 표현하기 3가지 방법 (1) | 2023.01.27 |
---|---|
Java 문자열을 char배열로 (.toCharArray()) (1) | 2023.01.27 |
Java 알고리즘 재귀함수에 대한 고민과 기록 (0) | 2023.01.25 |
Java 숫자 반올림, 올림, 내림(Math)+ 소수점 n번째 자리에서 반올림 (0) | 2023.01.23 |
Java 제네릭(Generic) 메서드 (0) | 2023.01.23 |