제곱근을 구하기 위해서는 다음과 같은 공식을 만족합니다.
x = root(a) 라면
x^2 = a 입니다.
따라서 x = a/x가 됩니다.
이에 의해서
임의의 x에 의해서 a의 제곱근 값은
x < root(a) < a/x 거나
a/x < root(a) <x 의 범위에 있게 됩니다.
따라서 a와 a/x의 평균값을 구하는
(a+b)/2 공식을 이용해 x = (x + a/x)/2 의 식을 이용하면
대부분의 수는 10번을 돌기 이전에 루트 값을 구할 수 있습니다.
간단하게 아래 C#으로 코딩해본 소스입니다.
using System;
using System.Collections.Generic;
using System.Text;
namespace Sqrt
{
class SqrtMain
{
static double Sqrt(double aa, double xx)
{
try
{
for (int i = 0; i < 10; i++)
Console.WriteLine(xx = (xx + aa / xx) / 2);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
return xx;
}
static void Main(string[] args)
{
Console.WriteLine(Sqrt(2341, 3));
}
}
}