扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
VB用两种方法穷举和相减
在峡江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、网站制作 网站设计制作定制网站制作,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站,成都外贸网站建设,峡江网站建设费用合理。
VB用两种方法计算两个最大公约数,用inputbox输入两个数
第一种相减法
两整数a和b:
① 若ab,则a=a-b
② 若ab,则b=b-a
③ 若a=b,则a(或b)即为两数的最大公约数,结束
④ 若a≠b,则再回去执行①
第二种穷举法
① i= a b中的小数
② 若a,b能同时被i整除,则i即为最大公约数,结束
③ i--,再回去执行②
Private Sub Cal1(ByVal a As Integer, ByVal b As Integer)
Dim res As Integer
res = -1
Do While a b
If a b Then
a = a - b
ElseIf b a Then
b = b - a
End If
If a = b Or a = 0 Or b = 0 Then
Exit Do
End If
Loop
res = a
Print a
End Sub
Private Sub Cal2(ByVal a As Integer, ByVal b As Integer)
Dim res As Integer
res = -1
Dim i As Integer
i = IIf(a = b, b, a)
Do While i 0
If a Mod i = 0 And b Mod i = 0 Then
res = i
Exit Do
Else
i = i - 1
End If
Loop
Print res
End Sub
这里采用的是求最大公约数的一种常用方法:辗转相除法。
辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
比如求252和105的最大公约数:
252 ÷ 105 = 2......42
105 ÷ 42 = 2......21
42 ÷ 21 = 2......0
因此21就是252和105的最大公约数。
'这个嘛,用我国古代数学家的“更相减损之术”就行。Private Sub Command1_Click()
Dim a, b As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)Do While abIf ab Then a=a-b Else b=b-aLoopText3.Text=a
End IfEnd Sub'此算法的原理就是大数减小数,直到产生一对相等的数,这个数就是最大公约数。 '如果照着你那种方式(应该是欧里几得算法吧),可以这样改:Private Sub Command1_Click()
Dim a, b, r As Integer
If Val(Text1.Text) Val(Text2.Text) Then
a = Val(Text1.Text)
b = Val(Text2.Text)
Else
b = Val(Text1.Text)
a = Val(Text2.Text)
End If
Do
r = a Mod b
a = b
b = r
Loop Until r = 0
Text3.Text = a
End Sub
最大公约数
do until a=b
if ab then
a=a-b
elseif ba then
b=b-a
end if
loop
msgbox (a)
最小公倍数
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
辗转相乘法是什么玩意?
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流