VB中求最大公约数的方法

求最大公约数的方法可以通过递减法来求,即(1)取两数中较小的数赋值给div.(2)如果n和m能同时被div整除,则div为最大公约数,结束程序,如果不能整除则转(3).(... 求最大公约数的方法可以通过递减法来求,即(1)取两数中较小的数赋值给div.(2)如果n和m能同时被div整除,则div为最大公约数,结束程序,如果不能整除则转(3).(3)让div=div-1,重复(2).请高手帮我根据此算法编写相应的程序 展开
 我来答
Wq2r1d
2019-10-02 · TA获得超过6620个赞
知道答主
回答量:5
采纳率:0%
帮助的人:785
展开全部

求最大公约数的方法可以通过递减法来求,具体编程步骤如下:

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

扩展资料:

最大公约数的求法:

(1)质因数分解法

质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数。

例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24,60)=12。

把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。

例如:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。

(2)短除法

短除法:短除法求最大公约数,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几个数的最大公约数。

短除法求最小公倍数,先用这几个数的公约数去除每个数,再用部分数的公约数去除,并把不能整除的数移下来,一直除到所有的商中每两个数都是互质的为止,然后把所有的除数和商连乘起来,所得的积就是这几个数的最小公倍数,例如,求12、15、18的最小公倍数。

短除法的本质就是质因数分解法,只是将质因数分解用短除符号来进行。

短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两个数互质)。

而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。

求最大公因数便乘一边,求最小公倍数便乘一圈。

参考资料来源:百度百科-最大公约数

渠睿Y
2015-11-11 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8932
采纳率:85%
帮助的人:1633万
展开全部

VB中求最大公约数的方法:

双击command控件,进入代码编写窗口,写入如下代码即可。


Private Sub Command1_Click()
    If Text1.Text = "" Then
    MsgBox "请输入Text1"
    Exit Sub
    End If
   
    If Text2.Text = "" Then
    MsgBox "请输入Text2"
    Exit Sub
    End If
   
    If IsNumber = True Then
    Text3.Text = GCD(Val(Text1.Text), Val(Text2.Text))
    End If
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Enabled = False
Command1.Caption = "计算最大公约数"
End Sub

Private Function IsNumber() As Boolean
    IsNumber = True
    For i = 1 To Len(Text1.Text)
    If IsNumeric(Mid(Text1.Text, i, 1)) = False Then
    MsgBox "请输入正整数"
    Text1.Text = ""
    IsNumber = False
    Exit Function
    End If
    Next i
   
    For i = 1 To Len(Text2.Text)
    If IsNumeric(Mid(Text2.Text, i, 1)) = False Then
    MsgBox "请输入正整数"
    Text2.Text = ""
    IsNumber = False
    Exit Function
    End If
    Next i
End Function

Private Function GCD(x As Integer, y As Integer) As Integer
    Dim r As Integer
    Do Until y = 0
        r = x Mod y
        x = y
        y = r
    Loop
    GCD = x
End Function

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GIS炮
2009-09-12 · TA获得超过869个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:404万
展开全部
这个公约和公倍数好像是上学时候,老师必教的...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2015-09-27 · TA获得超过335个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:117万
展开全部
'x,y为输入的数字(待求)
'b为最大公约数
Dim a, b As Integer
a = 2
While a <= x Or a <= y
If Int(x / a) = x / a And Int(y / a) = y / a Then
b = a
End If
a = a + 1
Wend 'vb.net中要用end while!
'输出b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cyqleaf
2009-09-12 · TA获得超过355个赞
知道答主
回答量:129
采纳率:0%
帮助的人:167万
展开全部
'根据该算法写出的函数如下:给定两个整型参数,返回两者的最大公约数
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式