# 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;
}
```