麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

基于歐幾里德算法的使用

2020-01-26 16:18:44
字體:
來源:轉載
供稿:網友

歐幾里德算法稱為輾轉相除法,用來求已知m、n兩個自然數的公因數。結合程序說明一下輾轉相除的具體情況。

首先看遞歸實現:

復制代碼 代碼如下:

int getcd(int m,int n)
 {
     if (m < 0 || n <0) {
         return 0;
     }
     if(m < n)
     {
         int t = m;
         m = n;
         n = t;
     }
     if(m % n)
     {
         return getcd(n,(m % n));
     }
     else
     {
         return n;
     }
 }

主要計算過程分為三個步驟:

1、對輸入的兩個自然數m > n取余數r,使得0<= r < n

2、如果r為0,n即為所求結果,直接返回

3、r不為0,則賦值m=n,n=r從步驟1開始重新執行

  兩自然數的公因數的定義說明了計算結果產生的條件。如果步驟1中計算出的余數r = 0,則較小的數為公因數。如果r!=0則自然數m、n的關系可表示為:m = kn + r(其中k為自然數),等式可以證明能整除m的任何數必定能整除n和r;等式進一步可變形為:r = m - kn,說明同時整除m、n的任何數也必定能整除r。也就是說,能整除m、n的數的集合與整除n、r的數的集合相等。所以輾轉相除的方法成立。
 

再發布一個循環實現歐幾里德算法的版本。

復制代碼 代碼如下:

int getcd2(int m,int n)
 {
     if (m < 0 || n <0) {
         return 0;
     }
     if(m<n)
     {
         int t=m;
         m=n;
         n=t;
     }
     int cd = 1;
     while(1){
         int r = m % n;
         if(0==r)
         {
             cd = n;
             break;
         }
         else {
             m=n;
             n=r;
         }
     }
     return cd;
 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 色诱亚洲精品久久久久久 | 羞羞网站视频 | 国产美女的小嫩bbb图片 | 男女生羞羞视频网站在线观看 | 海外中文字幕在线观看 | 在线播放免费人成毛片乱码 | 精品一区二区久久久久久久网精 | 一级黄色毛片a | 欧美a∨一区二区三区久久黄 | 在线中文日韩 | 免费看性xxx高清视频自由 | av在线一区二区三区 | 日本不卡一区二区在线观看 | 国产免费一区二区三区在线能观看 | 高清国产午夜精品久久久久久 | 精品国产观看 | 毛片视频网站在线观看 | 久久看视频 | 亚洲午夜电影 | 成人免费国产 | 国产乱一区二区三区视频 | 国产美女做爰免费视 | 蜜桃91丨九色丨蝌蚪91桃色 | 欧美精品日日鲁夜夜添 | 亚洲一区二区三区视频免费 | 国产精品嘿咻嘿咻在线播放 | 成人一级毛片 | 男女无套免费视频 | 性aaa | 国产一国产精品一级毛片 | 国产精品性夜天天视频 | 视频一区二区三区在线播放 | 亚洲xxx视频| 密室逃脱第一季免费观看完整在线 | 欧美黑人xx| 91久久99热青草国产 | 91av在线免费播放 | 久久久久久久亚洲视频 | 精品一区二区久久久久久久网精 | 69性欧美高清影院 | 国产精品久久久久影院老司 |