2017初音演唱会下载:如何用VB编一个求两个数最小公倍数的程序?请提供代码或地址谢谢

来源:百度文库 编辑:高校问答 时间:2024/05/11 04:04:58
最简单的代码,最好附上说明,我是初学者~~~~

这个程序最重要的就是展转相除~建议去看看数学书,只要会了这个整个程序就全明白了。我实在是没办法告诉你展转相除是怎么回事了....

Private Sub Form_Load()
Form1.AutoRedraw = True

Dim n1%, m1%, m%, n%, r%
n1 = InputBox("输入n1")
m1 = InputBox("输入m1")
If m1 > n1 Then '为了求最小公倍数,增加m,n变量
m = m1: n = n1
Else
m = n1: n = m1
End If
Do
r = m Mod n
If r = 0 Then Exit Do
m = n
n = r
Loop
Print n1; ","; m1; "的最大公约数为"; n
Print "最小公倍数=", m1 * n1 / n
End Sub

最简单的算法(效率不是最高)
Private Sub Form_Load()
a = 5
b = 38
MsgBox gongbeishu(a, b)
End Sub

Function gongbeishu(a, b)
For i = a To (a * b + 1)
If (i Mod a = 0) And (i Mod b = 0) Then
Exit For
End If
Next
gongbeishu = i
End Function

提示
第一,i从a 和b的任意一个开始,如果i除以a余数=0而且除以b余数也=0,退出循环。。思路最清晰拉,给分啊
第二,MOD为求余函数A MOD B就是A 除以B 的余数,A MOD B=0 即A是B的倍数

先求出最大公约数,可以用辗转相除法
再根据最大公约数求出最小公倍数
Function gongbeishu(a As Integer, b As Integer) As Integer

Dim t As Integer
Dim r As Integer
Dim m As Integer
Dim n As Integer

'保证第一个数大于第二个数
If a > b Then
m = a
n = b
Else
m = b
n = a
EndIf

'求a,b的余数
r = m Mod n

'辗转相除求a,b的最大公约数
Do While r <> 0
m = n
n = r
r = m Mod n
Loop

'求最小公倍数
gongbeishu = r * Int(a / r) * Int(b / r)

End Function

Function getBCD(argA,argB) ''最大公约数
Dim tmp
If argA>argB Then
tmp=argA
argA=argB
argB=tmp
End If
For tmp=argA To 1
If (argA Mod tmp)=0 And (argB Mod tmp)=0 Then
Exit For
End If
Next
getBCD=tmp
End Function

Function getLCM(argA,argB) '最小公倍数
Dim tmp
If argA>argB Then
tmp=argA
argA=argB
argB=tmp
End If
For tmp=argB To argB*argA
If (tmp Mod argA)=0 And (tmp Mod argB)=0 Then
Exit For
End If
Next
getLCM=tmp
End Function