.net中大數處理的一些演算法思想

來源:互聯網
上載者:User
         在 .NET 開發中,有時會因為處理一些邊緣學科的知識內容,如統計,金融,天文等計算,是加密解密演算法
都會涉及到大數的運算,就是.net中最大數實值型別儲存了都會溢出的數,我的一個想法是計算時用數實值型別,儲
存(暫時)和輸出時是字串 那麼儲存時就需要BOX[n] n個數組來暫時儲存一個計算中的小步驟結果,
'如一下例子
======================演算法理解圖=======================                        
'97*97*97*97*97                     = 8587340257                     box(1) = 587340257   box(2)=8
 '97*97*97*97*97*97               = 832972004929                box(1) = 972004929   box(2)=832 
'97*97*97*97*97*97*97         = 80798284478113             box(1) = 284478113   box(2)=80798
 '97*97*97*97*97*97*97*97  = 7837433594376961         box(1) = 594376961   box(2)=7837433   
'97^ 9                                   = 760231058654565217     box(1) = 654565217   box(2)=760231058 
 '97^ 10                         = 73742412689492826049   box(1) = 492826049   box(2)=742412689  box(3)=73 
     ……                                                  ……                                       ……                     ……  
注意box 下標越大對應的數越高位在,在運用上面的演算法時要記住
①先定義一個BOX的標誌為幾位,如上面是9位(根據需要和實際情況),
②由於計算習慣,很多人會從底位算起時{box(0 -> n)} 要先算box(n+1)位的數,在把box(n) 產生的進位元(如第一條計算box(1)向box(2)=0產生進位元8 box(2)+進位元 = 8 )進行處理,如以上時加法處理
③ 最好從高位算起,你將省去很多麻煩,box個數未知,沒關係,用動態數組,滿了時(最高下標box產生的進位元)再添一個
還有模數運算時,如果模數不大,也可以採用以上思想分段求模,再連結box得暫時結果,重新分配box(一定要從高位起重新截斷)如被模數123456789123456789  設八位一個box   box(1)=89 box(2)=91234567 box(3)=12345678各box分別模數再聯合(傳統是123456789123456789 ÷  333=370741108478849 模是72)  那麼重新分配的盒子應該是box(1) =478849 box(2) =370741180 而不能是box(1) =370741180  box(2) = 478849  為什麼? ∵從高位開始模數,box(n) 在被模數一次後如果不變,再次模數結果沒變是box(n) = box(n)  程式將進入死迴圈
     另外一種涉及大數運算的情況式是 對A的n 次方後模數 (A ^n mod  V ) 如果mod數不大可以(是n個A後結束)((A mod V)* A mod V) * A mod V …… 此演算法不一定要用遞迴實現,簡單的迴圈即可,最多兩層嵌套迴圈
    最後忠告 :對一個大數進行加減乘除時千萬別輕易的進行對被(加/減/乘/除)數因式分解,這種演算法效率會很底
     (文章編寫匆忙,可能存在錯字,敬請原諒)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.