1樓:匿名使用者
private sub gys(m as integer, n as integer)
'求出兩個數的最大公約數
dim r as integer
r = m mod n
do while r <> 0
m = n
n = r
r = m mod n
loop
end sub
private sub command1_click() '生成酉完全數
dim n as integer, d as integer, x as integer, y as integer, sum as integer, r as integer
for n = 6 to 200
sum = 0
for d = 1 to (n - 1)
if (n mod d) = 0 then
x = n / d
call gys(d, x)
if x = 1 then
sum = sum + d
end if
end if
next d
if sum = n then
picture1.print n
end if
next n
end sub
function gbs(a as long, b as long)
'求出兩個數的最小公倍數
dim x as long, y as long, k as long, 最大公約數 as long
x = iif(a >= b, a, b) 'x存入最大值
y = iif(a <= b, a, b) 'y 存入最小值
do '輾轉相除法
k = x mod y: if k = 0 then exit do
x = y: y = k
loop
最大公約數 = y
gbs = a * b / 最大公約數
end function
2樓:匿名使用者
這個是歐幾里德演算法:
private sub command1_click()dim p as integer
dim q as integer
dim temp as integer
dim r as integer
p = val(text1.text)
q = val(text2.text)
if p < q then
temp = p
p = q
q = temp
end if
dor = p mod q
if r = 0 then
msgbox str(q) & "為公約數"
exit do
else
p = q
q = r
end if
loop
end sub
解析:歐幾里德求公約數演算法:
步驟1:如果p 步驟2:令r是p/q的餘數. 步驟3:如果r=0,則q為最大公約數;否則令p=q,q=r並轉入步驟2. 3樓:匿名使用者 unction zdgys(byval m as long, byval n as long) as long '最大公約數 dim min as long, i as longmin = iif(m >= n, n, m)zdgys = 1 for i = 1 to min if m mod i = 0 and n mod i = 0 then zdgys = i next end function 求vb程式設計 輸入兩個數,求最大公約數和最小公倍數
80 4樓:你板比 供參考 使用vb求最大公約數的兩種方法是什麼? 求兩個整數的最大公約數 輾轉相除法 程式如下 varm n integer function fac i,j integer integer begin if j 0 then begin fac i exit end fac fac j i mod j end begin readln n,m w... 通過觀察容易發現,36963有約數3 3。而59570沒有質數3。59570有質因數2和5,而36963沒有質因數2和5。所以可以從36963中分解出3 3,從59570中分解出2 5,再求其餘部分的最大公約數。36963 3 3 4107 59570 2 5 5957 輾轉相除法 用大數除以小數再... int divisor int a,int b 自定義函式求兩數的最大公約數 設定中間變數進行兩數交換 while b 0 通過迴圈求兩數的餘數,直到餘數為0 return a 返回最大公約數到呼叫函式處 用輾轉相除法求最大公約數,怎麼編寫c語言程式?int divisor int a,int b ...
pascal求最大公約數,Pascal求最大公約數
求36963與59570的最大公約數
c語言用輾轉相除法求最大公約數編寫c語言程式