다음 알고리즘을 사용하면 완벽한 사각형을 계산할 수 있습니다.이 논리를 사용하여 제곱근을 계산하려고합니다. 그러나 어떻게 제곱근을 계산하는지 이해할 수 없습니다. 이 코드에서 작성된 논리를 수행하는 알고리즘이 있습니까?숫자가 완벽한 사각형인지 확인
public static boolean isPerfectSquare(BigDecimal num) {
BigDecimal squareRoot = one;
BigDecimal square = one;
BigDecimal i = one;
BigDecimal newSquareRoot;
int comparison = -1;
while (comparison != 0) {
if (comparison < 0) {
i = i.multiply(two);
newSquareRoot = squareRoot.add(i).setScale(0, RoundingMode.HALF_UP);
} else {
i = i.divide(two);
newSquareRoot = squareRoot.subtract(i).setScale(0, RoundingMode.HALF_UP);
}
if (newSquareRoot.compareTo(squareRoot) == 0) {
return false;
}
squareRoot = newSquareRoot;
square = squareRoot.multiply(squareRoot);
comparison = square.compareTo(num);
}
return true;
}
전체 코드를 공유 할 수 있습니까? 변수 'two'를 찾을 수 없습니다. – programmer
하나, 둘 등의 모든 변수에 대한 언급은 전역 변수로 각각 –
으로 초기화됩니다. 아마도 Newton-Raphson 알고리즘 일 것입니다. 그러나 어디에서 가져 왔는지는 사용되는 알고리즘을 문서화해야합니다. – EJP