编程:VB的一个小小问题?
来源:百度知道 编辑:UC知道 时间:2024/05/22 02:12:45
VB!~
VB!~
VB!~
VB!~
今天数学课本上的一道题目:m>n 是正整数 要求,求两数的最大公约数
我想用辗转相减法求两数的最大公约数...
展转相减法的条件:两数不能同时被2整除,即不能同时为偶数.
我想问一下,因为我还不知道如何表示"偶数"什么的~
所以我想了一种方法,
就是
x=m MOD 2 a=m/2
y=n MOD 2 b=n/2
然后判断x,y(余数)是否为0,若不是,那就
m=a
n=b
再继续上边的步骤(x=m MOD y=n MOD 2 2 a=m/2 b=n/2)
一直到x或y=0时停止循环
然后再进行展转相减法的步骤~
我不知道该怎么写,有谁能规范地写出来给我吗?
会的帮帮忙~
VB!~
VB!~
VB!~
今天数学课本上的一道题目:m>n 是正整数 要求,求两数的最大公约数
我想用辗转相减法求两数的最大公约数...
展转相减法的条件:两数不能同时被2整除,即不能同时为偶数.
我想问一下,因为我还不知道如何表示"偶数"什么的~
所以我想了一种方法,
就是
x=m MOD 2 a=m/2
y=n MOD 2 b=n/2
然后判断x,y(余数)是否为0,若不是,那就
m=a
n=b
再继续上边的步骤(x=m MOD y=n MOD 2 2 a=m/2 b=n/2)
一直到x或y=0时停止循环
然后再进行展转相减法的步骤~
我不知道该怎么写,有谁能规范地写出来给我吗?
会的帮帮忙~
不就是求最大公约数嘛,从较小的那个数开始循环到1,如果能被两个数同时整除,就是了呗。
dim a,b,c,i
a=100
b=50
if a>b then
c=b
else
c=a
end if
for i=c to 1
if (a mod i)=0 and (b mod i)=0 then
c=i
exit for
end if
next
msgbox c & "就是最大公约数"
Public Function gcd(A As Long, B As Long)
Dim m As Integer, n As Integer, r As Integer
m = A
n = B
Do
r = m Mod n
m = n
n = r
Loop Until r = 0
gcd = A / m * B
End Function
偶数就是被2整除的数了啊
if m mod 2= 0 then
这个就可以判断了
可以加我QQ136577800我跟你讨论一下 我做过2年的VB培训
private sub form_click()
dim a as single,b as single,c as single
a=100
b=50
if a>b then
c=b
else
c=a
end if
for i=c to 1
if (a mod i)=0 and (b mod i)=0 then
c=i
exit for
end if
next
msgbox c & "就是最大公约数"
m=in