• 2

[請教]適合運算超大位數的程式語言?

小弟高中的時候有學過basic語言,不過不是VB
是QB,很古老那種,不是視窗介面的

最近有拿出來複習一下,
(因為有找到視窗版的Decimal BASIC)
不過這程式語言好像也有限制耶!
無法運算太大的數值

因為我要算的是質數的分解
很大的那種,大約200多位數吧!
所以不知道板上精通數學或程式語言的高手
你們知道有哪種程式語言可以運算這麼大的位數呢?
多謝了!
2007-08-01 18:57 發佈
基本上很多語言都可以
重點是你要用支援算超大位數的Library

例如 http://www.shoup.net/ntl/index.html

或是OpenSSL的Library也有支援
因為encrypt/decrypt的時候要用到

小笨童 wrote:
小弟高中的時候有學過...(恕刪)


用演算法把數字拆成程式可以跑的範圍內去跑.

例如 11*21 = (10+1) * (20+1) = 10 * (20 + 1 ) + 1 * ( 20 + 1) = 10 * 20 + 10* 1 + 1 * 20 + 1 * 1
也許 11 * 21 太大, 但是拆成 10 * 20 , 10 * 1 , 1 * 20 , 1 * 1 , 最後再加起來就可以了.
slime wrote:

用演算法...(恕刪)

我好像表達的不大好
我要的是像1739這個數字,
但是我要能知道他是37*47這2個質數去乘出來的
但一開始的原始數字太大了,
造成程式跑不了,所以需要能夠運算大位數的程式

學習新的程式語言也是我要克服的

愛算數學的同好們,可以看一下AXN播出的數字搜查線
真的不錯喔!
小笨童 wrote:
我好像表達的不大好我...(恕刪)


以前在應數課程就是這樣學的.
不要想依靠電腦完成所有的事情, 超過電腦運算能力的資料太多了, 所以要學演算法, 把超過的部份拆成許多小塊去運算, 再組合起來.
所以一開始你就要面對怎麼存這個數字的問題
用Long Int也是解決不了

這個時候Library就有用了
從把String轉換然後存這個值 到轉成String印出來
它都有東西幫你做

建議你可以考慮用C
Java當然是不適合啦
因為會很慢
最適合做數學計算的 FORTRAN
我以前老闆都給我開個在伺服器Linux-OS帳號執行FORTRAN程式~~~
我映象中,我們走數值的,跑大計算都在這環境下執行!
價錢多少不重要,開心生活最重要! / 專注於本業與自己的工作,才是投資報酬率最高的生意。
小笨童 wrote:
我好像表達的不大好我...(恕刪)

試試FORTRAN看看! 它是專門用來給理工科的人計算的一種程式語言! 精確度可達2個WORDS!
小笨童 wrote:
小弟高中的時候有學過...(恕刪)


大型質數分解是一項艱難的工作,目前不少人投入研究的量子電腦很大一部份的研究
動機就是拿來作質數分解。基本上演算法優劣與否的影響比較大,跟你使用哪一種程
式語言比較沒有關係。普遍來說大型的計算工作都是在電腦叢集(cluster)上頭跑,
這上頭大家常用的語言是 C++ 或者是 FORTRAN 90/95。

前一陣子德國波昂大學(University of Bonn)的數學家 Thorsten Kleinjung 才剛
剛宣佈分解了一個 307 位的整數。他們估計利用現有硬體所需要的總運算時間大約是
九十五年,不過他們在演算方法上頗有心得,並利用分散式運算的方法將運算時間大
幅縮短。Kleinjung 有幾篇論文可以在網路上取得,有興趣的話可以去看看。
You don't take a photograph, you make it. - Ansel Adams
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?