亚洲国产福利在线一二三观看_精品国产伦一区二区三区欲臀_国产a∨视频精品视频护士_精品八戒人妻少妇av

江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導(dǎo)
江蘇省二級VB常用算法(五)約數(shù)因子

VB常用算法(五)約數(shù)因子- -

曹蘇群  http://caosuqun.bokee.com

Tag約數(shù)    因子    算法                                          

1、算法說明

1)        最大公約數(shù):

         用輾轉(zhuǎn)相除法求兩自然數(shù)m、n的最大公約數(shù)。

(1)        首先,對于已知兩數(shù)m、n,比較并使得m>n;

(2)        m除以n得余數(shù)r;

(3)        r0,則n為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟(4

(4)        mßn   nßr  再重復(fù)執(zhí)行(2

譬如:      105

分析步驟:        m=10 n=5

                          r=m mod n=0

                          所以n(n=5)為最大公約數(shù)

                  249

分析步驟:        m=24 n=9

                          r=m mod n=6

                          r0 m=9 n=6

                          r=m mod n=3

                          r0 m=6 n=3

                          r=m mod n=0

                          所以n(n=3)為最大公約數(shù)

算法實現(xiàn)

循環(huán)實現(xiàn)

Private Function GCD(ByVal m As Long, ByVal n As Long) As Long

    Dim temp As Long

    If m < n Then temp = m: m = n: n = temp

    Dim r As Long

    Do

        r = m Mod n

        If r = 0 Then Exit Do

        m = n

        n = r

    Loop

    GCD = n

   End Function

遞歸實現(xiàn)

                  Private Function GCD(ByVal m As Long, ByVal n As Long) As Long

    Dim temp As Long

    If m < n Then temp = m: m = n: n = temp

    Dim r As Long

    r = m Mod n

    If r = 0 Then

        GCD = n

    Else

        m = n

        n = r

        GCD = GCD(m, n)

    End If

                  End Function

2)        最小公倍數(shù)

         m×n÷最大公約數(shù)

3)        互質(zhì)數(shù)

         最大公約數(shù)為1的兩個正整數(shù)

解題技巧

該算法需要識記!

這種類型題目的擴展是約數(shù)和因子題型。

2、實戰(zhàn)練習(xí)

1)        補充代碼(2003春二(9))

         給定一個十進制正整數(shù),找出小于它并與其互質(zhì)的所有正整數(shù)(所謂互質(zhì)數(shù)是指最大公約數(shù)為1的兩個正整數(shù),下圖是程序執(zhí)行畫面)。

              Option Explicit

                  Private Function gcd     1     As Integer

                    Dim r As Integer

                         r = m Mod n

                    If r = 0 Then

                          gcd = n

                    Else

                          m = n: n = r

                                        2    

                 End If

                  End Function

                  Private Sub Command1_Click()

                    Dim n As Integer, p As Integer

                    n = Val(Text1)

                    For p = n - 1 To 2 Step -1

                               If      3       Then List1.AddItem p

                          Next p

                  End Sub

2)        編程題(2002秋上機試卷01

         生成一個三行八列的二維數(shù)組A(3,8),其中前兩行元素產(chǎn)生的方法是:

用初值X1=26及公式Xi+1=(25×Xi+357) Mod 1024,產(chǎn)生一個數(shù)列:X1X2、......X16 。

其中X1~X8作為A的第一行元素;X9~X16作為A的第二行元素;A的第三行元素值取前兩行同列元素的最大公約數(shù)。最后按圖示格式顯示在圖片框中。