JAVA天下

          小小博客,包羅萬有.
          隨筆 - 16, 文章 - 5, 評論 - 11, 引用 - 0
          數據加載中……

          Euclid 算法

          歐幾里得算法就是求最大公約數的展轉相除法。
          用c語言描述如下:
          int Euclid_Algorithm (int m, int n) {
             
          int temp = m;
             
          if (!|| !n) return 0;
             if
           (m < n) {m = n; n = temp;
          while (1) {
          if (!(m = m % n)) return n;
          if (!(n = n % m)) return m; } 
           


           knuth說:當m,n取某兩個巨大的數時,展轉的次數超過百萬次。
           我開始還不相信,又翻了幾頁發現用fibonacci數就能找到展轉次數最多的兩個數,這兩個數就是F[n]和F[n+1]^_^,很容易驗證最大展轉次數k = log(n),就是以黃金分割G為底n的對數。
          寫到這里就算完了,但還須證明一個先決條件,就是fibonacci相臨兩項互質。一個方法是利用這個性質: F[n-1] * F[n+1] - F[n]^2 = (-1)^n =>F[n-1]^2 + F[n-1] * F[n] - F[n]^2 = (-1)^n 說明F[n-1]與F[n]是互素的,因為其中任何公因子都將是(-1)^n的一個因子。


          MK-TIANYI

          posted on 2006-04-20 12:46 天一 閱讀(420) 評論(0)  編輯  收藏 所屬分類: 其他

          主站蜘蛛池模板: 阿拉善左旗| 安化县| 华安县| 侯马市| 云阳县| 中方县| 鱼台县| 潮安县| 怀化市| 安阳县| 广丰县| 松桃| 临高县| 青田县| 宝鸡市| 镇宁| 新田县| 太仓市| 合江县| 宝山区| 定边县| 和林格尔县| 红桥区| 建湖县| 邻水| 嘉峪关市| 淮北市| 泗水县| 富源县| 共和县| 大丰市| 平江县| 金昌市| 谢通门县| 花莲县| 广西| 玉门市| 蒙山县| 麻城市| 洪洞县| 呼图壁县|