辗转除法求最大公约数及最小公倍数
vb吧
全部回复
仅看楼主
level 11

VB
中 用迭代法和
do loop
循环 使用辗转除法 求
42897
和的最大公约数和最小公倍数
a=
42897
b=
18644
c= int(a/b) d= a mod b
。。。。。。。。。。
Private Sub Command1_Click()
'a = 42897: b = 18644: c = Int(a / b): d = a Mod b
a = 42897: b = 18644:
For i = 1 To 20
c = Int(a / b):
d = a Mod b
Print c
Print d
If d = 0 Then Exit For
a = b
b = d
Next
End Sub
上面程序求修改!!!谢谢。
2013年01月11日 04点01分 1
level 13
'就是两个数能同时都可被某数值整除的因数叫做公约数.
'这几个自然数的公约数中,最大的一个就叫做 最大公约数.
'两个数的最小公倍数是这两个数的积被它们的最大公约数去除.
'添加 Text1 Text2 Command1
Dim a&, b&, R&, MaxV&, MinV&
Private Sub Command1_click()
Me.Cls
'最大公约数
a = Val(Text1.Text)
b = Val(Text2.Text)
MaxV = IIf(a > b, a, b)
MinV = IIf(a < b, a, b)
Do
R = MaxV Mod MinV: MaxV = MinV: MinV = R
Loop While (R <> 0)
'最小公倍数
MinV = a * b / MaxV
Print "最大公约数 =" & CStr(MaxV) & Space(2) & "最小公倍数=" & Str(MinV)
End Sub

2013年01月11日 05点01分 2
谢谢老师1 3Q!!!!! MaxV = IIf(a > b, a, b) MinV = IIf(a < b, a, b) 这句代码请解释一下,好吗?
2013年01月11日 06点01分
level 13
MaxV = IIf(a > b, a, b) MinV = IIf(a < b, a, b)
IIf函数
如果 a>b 则MaxV就等于a 否则 MaxV=b
如果 a<b 则MinV就等于a 否则 MinV=b

2013年01月11日 06点01分 3
level 11
Private Sub Command1_Click()
a = InputBox("请输入a=", a)
b = InputBox("请输入b=", b)
Do
c = Int(a / b)
d = a Mod b
a = b: b = d '辗转除法
Loop While (d <> 0)
Print "最大公约数=" & a
Print "最小公倍数=" & a * b / d
End Sub
倒数第二行代码如何修改? 因为原始输入的a,b 几经代换, 已经面目全非!!
就此一句。
2013年01月11日 07点01分 4
level 11
Private Sub Command1_Click()
m = InputBox("请输入m=", m)
n = InputBox("请输入n=", n)
a = m
b = n
Do 'c = Int(a / b)
d = a Mod b
a = b: b = d '辗转除法
Loop While (d <> 0)
Print "最大公约数=" & a
Print "最小公倍数=" & m * n / a
End Sub
现在可以运行!!
2013年01月11日 07点01分 5
变量未定义啊
2021年05月27日 09点05分
level 13
既然知道原始输入变量会被你搞乱 你为何就那么吝啬多加两个变量呢?
变量不用你花钱滴....

2013年01月11日 07点01分 6
1