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)  編輯  收藏 所屬分類: 其他

          主站蜘蛛池模板: 惠来县| 梅河口市| 蛟河市| 福鼎市| 兴海县| 灌阳县| 海丰县| 绥德县| 武邑县| 东至县| 蒙城县| 牙克石市| 离岛区| 武功县| 桑植县| 新昌县| 涿州市| 天水市| 丹凤县| 平顶山市| 安平县| 泸西县| 舞阳县| 北京市| 台山市| 土默特右旗| 南京市| 镇原县| 商都县| 隆安县| 博客| 舟山市| 南昌县| 紫金县| 牟定县| 元谋县| 荥经县| 沐川县| 建始县| 德州市| 淄博市|