• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 71,  comments - 41,  trackbacks - 0
            先貼點人家的教學資料


            求最大公約數九法

            湖南省武岡市教研室 周定武

              一、觀察法

              運用能被2、3、5整除的數的特征進行觀察.

              例如,求225和105的最大公約數.因為225、105都能被3和5整除,所以225和105至少含有公約數(3×5)15.因為225÷15=15,105÷15=7.15與7互質,所以225和105的最大公約數是15.

              二、查找約數法
            先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的一個
            就是最大公約數.

              例如,求12和30的最大公約數.
            12的約數有:1、2、3、4、6、12;
            30的約數有:1、2、3、5、6、10、15、30.
            12和30的公約數有:1、2、3、6,其中6就是12和30的最大公約數.

              三、分解因式法

              先分別把兩個數分解質因數,再找出它們全部公有的質因數,然后把這些公有質因數相乘,得到的積就是這兩個數的最大公約數.

              例如:求125和300的最大公約數.因為125=5×5×5,300=2×2×3×5×5,所以125和300的最大公約數是5×5=25.

              四、關系判斷法

              當兩個數關系特殊時,可直接判斷兩個數的最大公約數.例如,兩個數互質時,它們的最大公約數就是這兩個數的乘積;兩個數成倍數關系時,它們的最大公約數就是其中較小的那個數.

              五、短除法

              為了簡便,將兩個數的分解過程用同一個短除法來表示,那么最大公約數就是所有除數的乘積.

              例如:求180和324的最大公約數.

              因為:

              5和9互質,所以180和324的最大公約數是4×9=36.

              六、除法法

              當兩個數中較小的數是質數時,可采用除法求解.即用較大的數除以較小的數,如果能夠整除,則較小的數是這兩個數的最大公約數.

              例如:求19和152,13和273的最大公約數.因為152÷19=8,273÷13=21.(19和13都是質數.)所以19和152的最大公約數是19,13和273的最大公約數是13.

              七、縮倍法

              如果兩個數沒有之間沒有倍數關系,可以把較小的數依次除以2、3、4……直到求得的商是較大數的約數為止,這時的商就是兩個數的最大公約數.例如:求30和24的最大公約數.24÷4=6,6是30的約數,所以30和24的最大公約數是6.

               八、求差判定法

              如果兩個數相差不大,可以用大數減去小數,所得的差與小數的最大公約數就是原來兩個數的最大公約數.例如:求78和60的最大公約數.78-60=18,18和60的最大公約數是6,所以78和60的最大公約數是6.

              
            如果兩個數相差較大,可以用大數減去小數的若干倍,一直減到差比小數小為止,差和
            小數的最大公約數就是原來兩數的最大公約數.例如:求92和16的最大公約數.92-1676,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公約數是4,所以92和16的最大公約數就是4.

              九、輾轉相除法

              當兩個數都較大時,采用輾轉相除法比較方便.其方法是:

              以小數除大數,如果能整除,那么小數就是所求的最大公約數.否則就用余數來除剛才的除數;再用這新除法的余數去除剛才的余數.依此類推,直到一個除法能夠整除,這時作為除數的數就是所求的最大公約數.

              例如:求4453和5767的最大公約數時,可作如下除法.

              5767÷4453=1余1314

              4453÷1314=3余511

              1314÷511=2余292

              511÷292=1余219

              292÷219=1余73

              219÷73=3

              于是得知,5767和4453的最大公約數是73.

              輾轉相除法適用比較廣,比短除法要好得多,它能保證求出任意兩個數的最大公約數.




            小學數學溫習過后,先來個兩個數遞歸版的

            int?GetGCDRec(int?n,?int?m)
            {
            ????
            if?(m?<?n)
            ????
            {
            ????????m?
            ^=?n;
            ????????n?
            ^=?m;
            ????????m?
            ^=?n;
            ????}


            ????
            if?(n?==?0)
            ????????
            return?m;
            ????
            else
            ????????
            return?GetGCDRec(n,?m?%?n);
            }

            輾轉相除法,求一個數組中所有數的最大公約數

            int?GetGCD(int?*arr,?int?len)
            {
            ????
            int?iMax?=?arr[0],?iCurr,?iRemainder;

            ????
            for(int?i?=?1;?i?<?len;?i++)
            ????
            {
            ????????iCurr?
            =?arr[i];

            ????????
            if?(iMax?<?iCurr)
            ????????
            {
            ????????????iMax?
            ^=?iCurr;
            ????????????iCurr?
            ^=?iMax;
            ????????????iMax?
            ^=?iCurr;
            ????????}


            ????????iRemainder?
            =?iMax?%?iCurr;

            ????????
            while?(iRemainder)
            ????????
            {
            ????????????iMax?
            =?iCurr;
            ????????????iCurr?
            =?iRemainder;
            ????????????iRemainder?
            =?iMax?%?iCurr;
            ????????}

            ????????
            ????????iMax?
            =?iCurr;
            ????}
            //for

            ????
            return?iMax;

            }

            最小公倍數就是乘積除以最大公約數

            int?GetLCM(int?*arr,?int?len)
            {
            ????
            int?multiple?=?1;

            ????
            for?(int?i?=?0;?i?<?len;?i++)
            ????????multiple?
            *=?arr[i];

            ????
            return?multiple?/?GetGCD(arr,?len);
            }




            ?

            posted on 2006-12-04 09:54 Charles 閱讀(3512) 評論(1)  編輯 收藏 引用 所屬分類: 面試小算法

            FeedBack:
            # re: 求最大公約數與最小公倍數
            2007-12-07 20:38 | yysdsyl
            GetLCM求數組最小公倍數有誤,應改為如下:
            int GetLCM(int m,int n)
            {
            return m*n/GetGCD(m,n);
            }

            int GetNLCM(int *arr, int len)
            {
            if(len==1)
            return *arr;
            return GetLCM(arr[len-1],GetNLCM(arr,len-1));
            }  回復  更多評論
              
            <2006年12月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            決定開始寫工作日記,記錄一下自己的軌跡...

            常用鏈接

            留言簿(4)

            隨筆分類(70)

            隨筆檔案(71)

            charles推薦訪問

            搜索

            •  

            積分與排名

            • 積分 - 50447
            • 排名 - 449

            最新評論

            閱讀排行榜

            評論排行榜

            国产成人综合久久精品红| 成人精品一区二区久久 | 久久国产精品国产自线拍免费| 久久久精品人妻无码专区不卡| 成人午夜精品久久久久久久小说 | 久久亚洲精精品中文字幕| 久久精品日日躁夜夜躁欧美| 久久无码国产专区精品| 久久人人爽人人爽人人片AV不| 尹人香蕉久久99天天拍| 久久国产色av免费看| 久久精品中文字幕一区| 日本欧美久久久久免费播放网 | 青青青伊人色综合久久| 国产国产成人久久精品| 欧美久久综合九色综合| 思思久久好好热精品国产| 亚洲人成精品久久久久| 久久Av无码精品人妻系列 | 中文字幕久久久久人妻| 色综合久久无码五十路人妻| 久久精品国产精品亚洲毛片| 久久电影网一区| 性做久久久久久久久老女人| 亚洲AV无码久久精品色欲| 婷婷综合久久狠狠色99h| 久久AAAA片一区二区| 日韩人妻无码一区二区三区久久| 久久精品免费一区二区三区| 欧美与黑人午夜性猛交久久久| 久久精品国产亚洲av水果派| 国产精品综合久久第一页| 免费久久人人爽人人爽av| 久久综合久久综合九色| 青青草原综合久久大伊人| 777久久精品一区二区三区无码| 久久亚洲AV无码精品色午夜麻豆| 7777久久亚洲中文字幕| 久久这里只精品99re66| 久久精品二区| 99久久精品国产麻豆|