2011年10月12日 星期三

96模擬 Problem 1 (最大公約數

Problem 1 (最大公約數 12%)
利用歐基里德輾轉相除法寫一個程式。輸入兩個正整數,輸出其最大公約數。輸入數值的大小限制於3到1000之間。

輸入說明:每一列由二個數字所組成,為一組測試資料。每個數字與數字間的區隔為一個空白符號,當為0 0時表示結束。(請參照輸入範例)
輸入範例:test1.txt
78 64
26 39
0 0

輸出說明:對於每組測試資料,輸出最大公約數。(請參照輸出範例)
輸出範例:result1.txt
2
13

3 則留言:

  1. Dim X As Integer, Y As Integer

    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do While Not EOF(1)
    Input #1, X, Y
    If X <> 0 And Y <> 0 Then
    Call Run(X, Y)
    End If
    Loop
    Close
    Close
    End
    End Sub


    Sub Run(a, b)

    If a = b Then
    Print #2, a
    Else
    If a > b Then Call Run(a - b, b)
    If b > a Then Call Run(a, b - a)
    End If

    End Sub

    回覆刪除
  2. 又複習一次輾轉相除法
    :D

    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do
    Input #1, x, y
    If x = 0 Then Exit Do

    Call T(x, y)

    Loop Until x = 0

    Close #2
    Close #1
    End
    End Sub

    Sub T(A, B)
    If A = B Then
    Print #2, A
    Else
    If A > B Then Call T(A - B, B)
    If B > A Then Call T(A, B - A)
    End If
    End Sub

    回覆刪除
  3. 佑好,arro好,
    程式正確。

    回覆刪除