# 55屆公開第二題 ## 題目要求: (1) 請撰寫程式,讓使用者輸入兩個 0 至 100 之間的整數,輸出兩數的最大公因數。 (2) 若輸入非上述情況的資料,請輸出【error】。 ## 我的作法 ### 處理意外 直接用一個大的try..catch(老朋友了)來處理意外狀況 ```csharp try { //就是不告訴你awa } catch { Console.WriteLine("error"); } ``` ### 獲取用戶輸入的值 ```csharp Console.WriteLine("請輸入第一個整數(0-100)"); int a = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("請輸入第二個整數(0-100)"); int b = Convert.ToInt16(Console.ReadLine()); ``` ### 判斷數字大小 使用if來判斷 ```csharp if (a>100&&a<1&& b > 100&& b < 1) { Console.WriteLine("error"); } else { int gcd = GetGCD(a, b); Console.WriteLine("兩數的最大公因數是"+ gcd); Console.ReadKey(); } ``` ### 求出最大公因數 使用輾轉相除法去除,但這是什麼我也不知道 ```csharp static int GetGCD(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } ``` ### 完整程式碼 ```csharp using System.Security.Cryptography; try { Console.WriteLine("請輸入第一個整數(0-100)"); int a = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("請輸入第二個整數(0-100)"); int b = Convert.ToInt16(Console.ReadLine()); if (a>100&&a<1&& b > 100&& b < 1) { Console.WriteLine("error"); } else { int gcd = GetGCD(a, b); Console.WriteLine("兩數的最大公因數是"+ gcd); Console.ReadKey(); } } catch { Console.WriteLine("error"); } static int GetGCD(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } ```