---
# System prepended metadata

title: 55屆公開第二題

---

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