2012-11-24 20 views
4

有些情況下程序員需要或想要查找非常大的數字。這些通常是非常大的,他們無視程序員的理解。我正在談論諸如the largest known prime number(與12978189 數字)和最近計算的10 trillion digits of pi你如何處理荒謬的大數字?

如何創建一個處理這些的程序?這遠遠超過了整數,長整數,雙整數,BigInteger,BigDecimal或其他任何類型。這些類型的程序如何創建這些數字?如果沒有適當的數據類型存在,你甚至可以將它們存儲在內存中,並且它們每個可能會消耗千兆字節的數據

+0

這肯定要依賴於要處理的號碼類型,因爲有處理無限長的數字等數學巧妙招數 –

+0

你的意思是荒謬的大*** ***整數與準確值(你指定的所有數字)?因爲「荒謬的大實數」或「具有近似值的荒謬大數」,是另一類瘋狂。 – RBarryYoung

+0

@RBarryYoung嗯,我的意思是整數和實數,但我沒有意識到它會採用截然不同的方法。 :( – asteri

回答

4

爲了解決您的具體的例子:

  • 1200萬位整數並不是非常大,是典型的「大整數」類來處理。這應該可以存儲在內存中。

  • 要存儲10兆位π的數字,你可以使用磁盤文件和內存映射它。你需要一個64位的操作系統和應用程序,但是你可以簡單地在磁盤上創建一個10千兆字節的文件(你可能需要一些磁盤和一個像ZFS這樣的文件系統,可以將其存儲在磁盤上),並將其映射到CPU地址空間。計算π的算法(例如BBP)可以方便地計算一個十六進制數字,這個數字很適合半個字節的內存。