글 작성자: 써니루루

제곱근을 구하기 위해서는 다음과 같은 공식을 만족합니다.


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));
        }
    }
}