Private Function gcd(n As Integer, m As Integer) As Integer
創(chuàng)新互聯(lián)公司服務(wù)項目包括益陽網(wǎng)站建設(shè)、益陽網(wǎng)站制作、益陽網(wǎng)頁制作以及益陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,益陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到益陽省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Dim k As Integer, max As Integer, min As Integer '定義一個大數(shù)的變量max,一個小數(shù)的變量
If n m Then '如果n大,那么
max = n? 'n是大數(shù)
min = m? 'm是小數(shù)
Else
max = m
min = n
End If
k = max Mod min 'k為大數(shù)除小數(shù)的余數(shù)
If k = 0 Then
gcd = min
Else
gcd = gcd(min, k) '遞歸調(diào)用,參數(shù)應(yīng)該是小數(shù)和余數(shù)
End If
End Function
Private Sub form_click()
Dim m As Integer, n As Integer
m = Val(InputBox("輸入第1個數(shù)"))
n = Val(InputBox("輸入第2個數(shù)"))
Print gcd(n, m) '這里gcd后面要加參數(shù),你的沒寫
End Sub
最大公約數(shù)
do until a=b
if ab then
a=a-b
elseif ba then
b=b-a
end if
loop
msgbox (a)
最小公倍數(shù)
c = a
22:
If a Mod b = 0 Or b Mod a = 0 Then
If a b Then
MsgBox(a)
Else
MsgBox(b)
End If
Else
a = a + c
GoTo 22
End If
輾轉(zhuǎn)相乘法是什么玩意?
是long類型聲明字符
dim a as long 顯示聲明
a 隱式聲明
a=1 代表給長整形變量a賦值1
不是和=為一體而是接與變量名后
======================以上為VB6
你這個是VB.NET的代碼 = 是 累加的意思
再Label1.Text 原本內(nèi)容的基礎(chǔ)上 連接上 ("最小公倍數(shù)=" m1 * n1 / m) vbCrLf 這內(nèi)容
求最大公約數(shù)的方法可以通過遞減法來求,具體編程步驟如下:
Private Function gcd(x As Integer, y As Integer) As Integer
Dim div As Integer
If x y Then
div = x
Else
div = y
End If
While div 1
If x Mod div = 0 And y Mod div = 0 Then
gcd = div
Exit Function
Else
div = div - 1
End If
Wend
gcd = 1
End Function
擴展資料:
最大公約數(shù)的求法:
(1)質(zhì)因數(shù)分解法
質(zhì)因數(shù)分解法:把每個數(shù)分別分解質(zhì)因數(shù),再把各數(shù)中的全部公有質(zhì)因數(shù)提取出來連乘,所得的積就是這幾個數(shù)的最大公約數(shù)。
例如:求24和60的最大公約數(shù),先分解質(zhì)因數(shù),得24=2×2×2×3,60=2×2×3×5,24與60的全部公有的質(zhì)因數(shù)是2、2、3,它們的積是2×2×3=12,所以,(24,60)=12。
把幾個數(shù)先分別分解質(zhì)因數(shù),再把各數(shù)中的全部公有的質(zhì)因數(shù)和獨有的質(zhì)因數(shù)提取出來連乘,所得的積就是這幾個數(shù)的最小公倍數(shù)。
例如:求6和15的最小公倍數(shù)。先分解質(zhì)因數(shù),得6=2×3,15=3×5,6和15的全部公有的質(zhì)因數(shù)是3,6獨有質(zhì)因數(shù)是2,15獨有的質(zhì)因數(shù)是5,2×3×5=30,30里面包含6的全部質(zhì)因數(shù)2和3,還包含了15的全部質(zhì)因數(shù)3和5,且30是6和15的公倍數(shù)中最小的一個,所以[6,15]=30。
(2)短除法
短除法:短除法求最大公約數(shù),先用這幾個數(shù)的公約數(shù)連續(xù)去除,一直除到所有的商互質(zhì)為止,然后把所有的除數(shù)連乘起來,所得的積就是這幾個數(shù)的最大公約數(shù)。
短除法求最小公倍數(shù),先用這幾個數(shù)的公約數(shù)去除每個數(shù),再用部分數(shù)的公約數(shù)去除,并把不能整除的數(shù)移下來,一直除到所有的商中每兩個數(shù)都是互質(zhì)的為止,然后把所有的除數(shù)和商連乘起來,所得的積就是這幾個數(shù)的最小公倍數(shù),例如,求12、15、18的最小公倍數(shù)。
短除法的本質(zhì)就是質(zhì)因數(shù)分解法,只是將質(zhì)因數(shù)分解用短除符號來進行。
短除符號就是除號倒過來。短除就是在除法中寫除數(shù)的地方寫兩個數(shù)共有的質(zhì)因數(shù),然后落下兩個數(shù)被公有質(zhì)因數(shù)整除的商,之后再除,以此類推,直到結(jié)果互質(zhì)為止(兩個數(shù)互質(zhì))。
而在用短除計算多個數(shù)時,對其中任意兩個數(shù)存在的因數(shù)都要算出,其它沒有這個因數(shù)的數(shù)則原樣落下。直到剩下每兩個都是互質(zhì)關(guān)系。
求最大公因數(shù)便乘一邊,求最小公倍數(shù)便乘一圈。
參考資料來源:百度百科-最大公約數(shù)
Public Class Form1
Private Function jc1(ByVal q)
Dim i%, p%
p = 1
For i = 1 To q Step 1
p = p * i
Next
Return p
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim m!, n!, info1$, info2, C!, title$
title = "組合數(shù)計算小能手"
info1 = "請輸入m的值"
info2 = "請輸入n的值"
m = Val(InputBox(info1, title))
n = Val(InputBox(info2, title))
C = jc1(m) / jc1(n) / jc1(m - n)
Label1.Text = "結(jié)果是" " " C
End Sub
你明白這種求公因數(shù)算法的思路就理解了。
這是輾轉(zhuǎn)相除法
比如求
18
和
48
的最大公因數(shù)
第一部
大數(shù)除以小數(shù)取余數(shù)
48÷18=2……12
第二部
余數(shù)是零,結(jié)束運算,小數(shù)即為最大公因子;余數(shù)不是零,繼續(xù)利用輾轉(zhuǎn)相除法,小數(shù)除以余數(shù)再取余數(shù)
18÷12=1……6
第三步
如果余數(shù)是零,則計算結(jié)束,上步運算的除數(shù)即為最大公因子;否則繼續(xù)利用輾轉(zhuǎn)相除法,將上步的除數(shù)除以余數(shù)再取余數(shù)
12÷6=0
第四步,這個題目的余數(shù)是零,運算結(jié)束,最大公因子是上步中的除數(shù)6。
m,n不斷交換,中間不分彼此,重要的是循環(huán)結(jié)束后的值