重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Private Function gcd(n As Integer, m As Integer) As Integer
创新互联公司服务项目包括益阳网站建设、益阳网站制作、益阳网页制作以及益阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,益阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到益阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Dim k As Integer, max As Integer, min As Integer '定义一个大数的变量max,一个小数的变量
If n m Then '如果n大,那么
max = n 'n是大数
min = m 'm是小数
Else
max = m
min = n
End If
k = max Mod min 'k为大数除小数的余数
If k = 0 Then
gcd = min
Else
gcd = gcd(min, k) '递归调用,参数应该是小数和余数
End If
End Function
Private Sub form_click()
Dim m As Integer, n As Integer
m = Val(InputBox("输入第1个数"))
n = Val(InputBox("输入第2个数"))
Print gcd(n, m) '这里gcd后面要加参数,你的没写
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
辗转相乘法是什么玩意?
是long类型声明字符
dim a as long 显示声明
a 隐式声明
a=1 代表给长整形变量a赋值1
不是和=为一体而是接与变量名后
======================以上为VB6
你这个是VB.NET的代码 = 是 累加的意思
再Label1.Text 原本内容的基础上 连接上 ("最小公倍数=" m1 * n1 / m) vbCrLf 这内容
求最大公约数的方法可以通过递减法来求,具体编程步骤如下:
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的最小公倍数。
短除法的本质就是质因数分解法,只是将质因数分解用短除符号来进行。
短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两个数互质)。
而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。
求最大公因数便乘一边,求最小公倍数便乘一圈。
参考资料来源:百度百科-最大公约数
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 = "组合数计算小能手"
info1 = "请输入m的值"
info2 = "请输入n的值"
m = Val(InputBox(info1, title))
n = Val(InputBox(info2, title))
C = jc1(m) / jc1(n) / jc1(m - n)
Label1.Text = "结果是" " " C
End Sub
你明白这种求公因数算法的思路就理解了。
这是辗转相除法
比如求
18
和
48
的最大公因数
第一部
大数除以小数取余数
48÷18=2……12
第二部
余数是零,结束运算,小数即为最大公因子;余数不是零,继续利用辗转相除法,小数除以余数再取余数
18÷12=1……6
第三步
如果余数是零,则计算结束,上步运算的除数即为最大公因子;否则继续利用辗转相除法,将上步的除数除以余数再取余数
12÷6=0
第四步,这个题目的余数是零,运算结束,最大公因子是上步中的除数6。
m,n不断交换,中间不分彼此,重要的是循环结束后的值