티스토리 뷰

알고리즘

001_Euclid

김윤지. 2023. 9. 12. 20:31

<유클리드의 최대공약수 알고리즘>

2개의 자연수의 최대공약수 = (큰 수 - 작은수)와 (작은수)와의 최대공약수와 같다

뺄셈 대신 나눗셈을 이용하면 빠른 계산 가능

 

<Euclid 호제법 - 최대공약수>

이 알고리즘의 핵심 아이디어는 두 정수의 최대공약수를 찾을 때,

큰 수와 작은 수의 나머지를 구해서 작은 수를 계속해서 업데이트해 나가는 것

이것을 반복하면 최대공약수를 구할 수 있다

 

001_Euclid

using System.Windows;

namespace _001_Euclid
{
    /// Euclid 호제법 - 최대공약수
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            int x = int.Parse(textBox1.Text);
            int y = int.Parse(textBox2.Text);
            int gcd = Euclid(x, y);
            txtResult.Text = "GCD = " + gcd.ToString();
        }

        private int Euclid(int x, int y)
        {
            // y가 0이라면 x가 최대공약수이므로 x 리턴
            if (y == 0)     
                return x;
            // x와 y의 나머지를 새로운 x로 설정하고 y 그대로 유지
            else
                return Euclid(y, x % y);  
        }
    }
}

유클리드 알고리즘

private int Euclid(int x, int y)
{
    // y가 0이라면 x가 최대공약수이므로 x 리턴
    if (y == 0)
         return x;
    // x와 y의 나머지를 새로운 x로 설정하고 y 그대로 유지
    else
        return Euclid(y, x % y);
}

 

'알고리즘' 카테고리의 다른 글

알고리즘 개요  (0) 2023.09.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함