最大公約數(shù)的算法

          Posted on 2006-11-28 01:54 近似凱珊卓 閱讀(807) 評論(0)  編輯  收藏 所屬分類: 學(xué)習(xí)筆記

          汗~學(xué)過又忘掉的東西。。。那就記錄下來,讓忘卻來得更猛烈些吧!

          //遞歸實現(xiàn)

          int gcd(int m,int n)

          {

          ?????? if (m < n)

          ?????? {

          ????????????? int tmp = m;

          ????????????? m = n;

          ????????????? n = tmp;

          ?????? }

          ?

          ?????? if (n == 0)

          ????????????? return m;

          ?????? else

          ????????????? return gcd(n,m % n);

          }
          ?
          //非遞歸實現(xiàn)

          int gcd2(int m,int n)

          {

          ?????? if (m < n)

          ?????? {

          ????????????? int tmp = m;

          ????????????? m = n;

          ????????????? n = tmp;

          ?????? }

          ?

          ?????? if (n == 0)

          ????????????? return m;

          ??????

          ?????? while (n > 0)

          ?????? {

          ????????????? int tmp = m % n;

          ????????????? m = n;

          ????????????? n = tmp;

          ?????? }

          ?

          ?????? return m;

          }
          ?

          ?????? 這里給出了最大公約數(shù)的算法,那怎么求最大公倍數(shù)呢?其實知道了最大公約數(shù),最小公倍數(shù)的求法就簡單了:

          int gbs(int m,int n)

          {

          ?????? return m*n/gcd(m,n);

          }
          ?


          求最大公約數(shù)的stein算法(zz)
          astrophor 發(fā)表于 2006-9-9 20:24:00


          在處理大數(shù)時比較有效,因為沒有用到大數(shù)的除法運(yùn)算,速度會很快。

          int gcd(int a,int b)
          {
          if (a == 0) return b;
          if (b == 0) return a;
          if (a % 2 == 0 && b % 2 == 0) return 2 * gcd(a/2,b/2);
          else if (a % 2 == 0) return gcd(a/2,b);
          else if (b % 2 == 0) return gcd(a,b/2);
          else return gcd(abs(a-b),min(a,b));
          }


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          posts - 9, comments - 0, trackbacks - 0, articles - 0

          Copyright © 近似凱珊卓

          主站蜘蛛池模板: 达尔| 甘孜县| 通山县| 高唐县| 神农架林区| 响水县| 郎溪县| 潮安县| 临沂市| 孝昌县| 仙居县| 南和县| 曲靖市| 五大连池市| 泰安市| 白水县| 隆回县| 连云港市| 博客| 南丹县| 临夏市| 龙游县| 庆阳市| 柳林县| 周口市| 新兴县| 班玛县| 青河县| 交城县| 兴和县| 宁化县| 玉溪市| 石渠县| 巫溪县| 安丘市| 浦江县| 湾仔区| 曲麻莱县| 五华县| 无为县| 石楼县|