excel中使用vba來求取兩個數的最大公約數

小編致力於為大家奉獻最有效的經驗,讓大家能夠解決掉問題,但是大家也都知道,每個人遇到的情況都是不一樣的,大家在看小編經驗的同時,除了跟隨操作,也需要自己的思考,舉一反三的解決問題,這樣才會變得更加有內涵,成為和小編一樣的經驗達人。excel中使用vba來求取兩個數的最大公約數,這裡,讓小編給大家介紹一下。

工具/原料

excel2016
此經驗本人原創首發,未經本人許可請勿轉載。

方法/步驟

首先打開一個工作樣表作為例子,並進入vba代碼編輯窗口。

在編輯窗口中輸入以下代碼。

Sub 最大公約數()

Dim m As Integer, n As Integer

Dim m1 As Integer, n1 As Integer

Dim t As Integer

m = InputBox("輸入自然數m:")

n = InputBox("輸入自然數n:")

m1 = m

n1 = n

If m1 < n1 Then

m1 = n

n1 = m '交換m和n的值

End If

Do

r = m1 Mod n1

If r = 0 Then Exit Do

m1 = n1

n1 = r

Loop

str1 = m & "," & n & "的最大公約數=" & n1

MsgBox str1

End Sub

我們先要知道最大公約數的求法,以本代碼為例使用的是輾轉相除法,定義是兩個整數的最大公約數等於其中較小的那個數和兩數的和相除餘數為最大公約數。所以我們先將兩個整數做一個定義。

接著是需要新定義兩個整數變量為m1,n1用作計算。不直接使用m和n作為變量的原因大家很清楚是為了在最後顯示結果的時候,可以直接調用。

這裡的if判斷語句,是為了確定兩個整數中較小的那個值作為除數。

If m1 < n1 Then

m1 = n

n1 = m '交換m和n的值

End If

大家可以理解為在輸入m,n值時會發生第一個數比第二個數大的時候,做這樣一個重新賦值,來簡單化後面的重複取余過程。

這裡是做重複取余,直到餘數為0中止。

最後定義一個變量顯示n1值為最大公約數,並使用msgbox函數顯示其信息。

按F5進行調試。我們還可以在loop循環里設定一個debug.print r來調試每次取余的求值。來幫助我們理解這段循環語句的實際計算過程。大家注意這兩個代碼

m1 = n1

n1 = r

這裡是將M1取n1值,而n1取求得的余值。按過程計算是越來越小,最終mod得值為0。

先寫到這裡了,謝謝大家的觀看。

祝大家生活愉快。

小編還有許多其他的經驗可以觀看,如果無法解決問題可以聯繫小編進行諮詢。

看不清楚圖片的可以點擊放大再看哦。

注意事項

個人經驗,僅供參考。

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場