<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 195, comments - 34, trackbacks - 0, articles - 1

    最大公約數和最小公倍數

    Posted on 2009-10-26 22:56 小強摩羯座 閱讀(290) 評論(0)  編輯  收藏 所屬分類: 算法編程

    最大公約數和最小公倍數

    語言: C, 標簽: 無  2008/07/22發布 5個月前更新 更新記錄
    作者: 半瓶墨水, 點擊5221次, 評論(0), 收藏者(0), , 打分:登錄以后才能打分, 目前平均0.0分,總分0, 共有0個用戶參與打分
    # 以下描述來自: http://baike.baidu.com/view/47637.htm
    #
    # 最大公約數(greatest common divisor,簡寫為gcd;
    # 指某幾個整數共有公約數中的最大一個
    #  例: 在2、4、6中,2就是2,4,6的最大公約數。
    #
    # 重要性質:
    # gcd(a,b)=gcd(b,a) (交換律)
    # gcd(-a,b)=gcd(a,b)
    # gcd(a,a)=|a|
    # gcd(a,0)=|a|
    # gcd(a,1)=1
    # gcd(a,b)=gcd(b, a mod b)
    # gcd(a,b)=gcd(b, a-b)
    # 如果有附加的一個自然數m,
    # 則: gcd(ma,mb)=m * gcd(a,b) (分配率)
    # gcd(a+mb ,b)=gcd(a,b)
    # 如果m是a和b的最大公約數,
    # 則: gcd(a/m ,b/m)=gcd(a,b)/m
    # 在乘法函數中有:
    # gcd(ab,m)=gcd(a,m) * gcd(b,m)
    # 兩個整數的最大公約數主要有兩種尋找方法:
    # * 兩數各分解質因子,然后取出同樣有的項乘起來
    # * 輾轉相除法(擴展版)
    # 和最小公倍數(lcm)的關系:
    # gcd(a, b) * lcm(a, b) = ab
    # a與b有最大公約數,但不一定有最小公倍數。
    # 兩個整數的最大公因子可用于計算兩數的最小公倍數,或分數化簡成最簡分數。
    # 兩個整數的最大公因子和最小公倍數中存在分配律:
    # * gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))
    # * lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c))
    # 在坐標里,將點(0, 0)和(a, b)連起來,通過整數坐標的點的數目(除了(0, 0)一點之外)就是gcd(a, b)。
    #
    #
    # 以下代碼來自: http://bbs.bccn.net/thread-224663-1-1.html
    #
    int GCD(int a, int b)
    {
       if(b == 0) return a;
       else return GCD(b, a % b);
    }

    int LCM(int a, int b)
    {
       return a * b / GCD(a,b);
    }

    /*以下代碼來自:http://en.wikipedia.org/wiki/Binary_GCD_algorithm */
    unsigned int gcd(unsigned int u, unsigned int v)
    {
        int shift;

        /* GCD(0,x) := x */
        if (u == 0 || v == 0)
            return u | v;

        /* Let shift := lg K, where K is the greatest power of 2
           dividing both u and v. */
        for (shift = 0; ((u | v) & 1) == 0; ++shift) {
            u >>= 1;
            v >>= 1;
        }

        while ((u & 1) == 0)
            u >>= 1;

        /* From here on, u is always odd. */
        do {
            while ((v & 1) == 0/* Loop X */
                v >>= 1;

            /* Now u and v are both odd, so diff(u, v) is even.
               Let u = min(u, v), v = diff(u, v)/2. */
            if (u < v) {
                v -= u;
            } else {
                unsigned int diff = u - v;
                u = v;
                v = diff;
            }
            v >>= 1;
        } while (v != 0);

        return u << shift;
    }


    主站蜘蛛池模板: 亚洲bt加勒比一区二区| 国产偷窥女洗浴在线观看亚洲| 亚洲AV无码一区二区三区系列| 国产精品亚洲二区在线| 成人人免费夜夜视频观看| 亚洲人和日本人jizz| 国产香蕉免费精品视频| 亚洲免费黄色网址| 亚洲成人一级电影| 精品人妻系列无码人妻免费视频| 四只虎免费永久观看| 久久亚洲私人国产精品vA| 国产99在线|亚洲| 91视频精品全国免费观看| 成人毛片免费观看视频在线 | 亚洲精品免费视频| 亚洲人成在线电影| 在线天堂免费观看.WWW| 亚洲av片在线观看| 波多野结衣在线免费视频| 国产精品亚洲自在线播放页码| 成年人免费视频观看| 免费亚洲视频在线观看| a级亚洲片精品久久久久久久 | 美女被cao免费看在线看网站| 亚洲一区二区三区国产精品无码| 久久不见久久见免费影院www日本 久久WWW免费人成—看片 | 色屁屁www影院免费观看视频| 亚洲日本va午夜中文字幕久久| 亚洲精品123区在线观看| 毛片免费全部播放无码| 亚洲男人的天堂网站| 性生交片免费无码看人| 男女交性无遮挡免费视频| 国产亚洲综合网曝门系列| 日本在线高清免费爱做网站| 亚洲AV日韩AV一区二区三曲| 亚洲av午夜福利精品一区| 搡女人免费视频大全| 韩日电影在线播放免费版| ww亚洲ww在线观看国产|