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 天一 閱讀(425) 評論(0)  編輯  收藏 所屬分類: 其他

          主站蜘蛛池模板: 伊宁市| 萝北县| 米林县| 孝昌县| 德惠市| 桐梓县| 黄大仙区| 靖西县| 石屏县| 瑞安市| 含山县| 龙口市| 兰考县| 安溪县| 溧水县| 大港区| 女性| 科尔| 得荣县| 镇江市| 宁夏| 尚义县| 秦安县| 贵阳市| 临海市| 深水埗区| 郸城县| 涿鹿县| 章丘市| 阿瓦提县| 濮阳市| 吐鲁番市| 大庆市| 新泰市| 甘泉县| 道真| 洛浦县| 大连市| 木兰县| 调兵山市| 靖安县|