python函數封裝計算n運算_在Python里面怎么可以運算出999999999**999999999,求思路?...

>>> 999999999 * math.log(999999999, 2) / 8 / 1024 ** 3

3.480509950621777

所以這個數字本身就差不多需要3.5GB內存,考慮到計算過程中需要存儲臨時結果,還需要翻個兩三倍吧

而Python中的long可以到多少呢:

#define MAX_LONG_DIGITS \

((PY_SSIZE_T_MAX - offsetof(PyLongObject, ob_digit))/sizeof(digit))

offsetof算出來的是對象頭大小,很小,digit是表示數字的每個“位”的字節數,其實就是這個數字存放的數組的元素大小,比如unsigned short,單純看內存的話,可以大概到PY_SSIZE_T_MAX這個級別,這個數字是C的size_t的最大值除以二,若在64bit環境下,怎么看都夠用了

但是呢,這個數字算出來你只需要內存和時間就好,但是打印出來就是另回事了,因為還要轉為10進制,這時候光是算出來的字符串消耗的內存就是:

>>> 999999999 * math.log(999999999, 10) / 1024 ** 3

8.381903162752934

而且這個計算過程是非常慢的,數字轉10進制需要O(N)次除法,每次O(N)。。。基本你是等不了的

當然,你也可以自己實現一個用10的冪的進制的形式存儲的大數算法,不過用純python搞這事,內存消耗也是很大的

===================

補充:實際上,就算只是計算一下這個算式,也是很慢的,你可以自己試一下在命令行敲入:

a = 999999999 ** 999999999

只計算不輸出,理論上如果你機器有個16G內存也是能算完的,但是,你打開win的任務管理器或者linux的top就可以看到,內存漲的其實還是蠻慢的,雖然Python在計算long的乘方用了快速冪(這個式子只需要幾十次乘法),以及大數相乘用的那個O(N^1.58)的分治算法,但是數字比較大的時候后者還是非常慢的

[xt@mac: ~ $] time python -c 'a = 9999; a ** a'

real0m0.037s

user0m0.015s

sys0m0.018s

[xt@mac: ~ $] time python -c 'a = 99999; a ** a'

real0m0.128s

user0m0.105s

sys0m0.019s

[xt@mac: ~ $] time python -c 'a = 999999; a ** a'

real0m4.704s

user0m4.671s

sys0m0.028s

[xt@mac: ~ $]

這個增長速度。。。大致你就認為沒法算出來吧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374001.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中const關鍵字的使用總結

const是不變的意思,在C程序中,經常用const來限制對一個對象的操作: 1.1 const變量 例如: const int n3; 則這個變量的值不能改變,即不能對變量賦值。 1.2 const參數 出現在函數參數中的const表示在函數體中不能對這個參數做修改…

php封裝redis負載均衡類

$array array( master > array( "redis://127.0.0.1:6379?timeout1", ), slave > array( "redis://127.0.0.1:6479?timeout1", "redis://127.0.0.1:6579?timeout1", ) ); $redis R…

我今天對JavaFX的了解

如果您沒有聽說過,JavaFX 2是Java的新Desktop / web / client框架。 自JavaFX 1以來,它已經進行了相當大的改動(坦率地說,效果并不那么令人印象深刻)。 自定義腳本語言已經淘汰了,您可以使用標準Java和基于…

怎么解決xp系統不能安裝NET Framework4.0?

.net 4.0安裝不上解決方法: 引用 9 樓 MoreQuestion 的回復: 全部都不行!就是用360軟件管家安裝那個就可以了。用了樓主的方法,果然可行啊 1.先安裝wic。 2.用360安裝.net40 本帖最后由 不懂 于 2014-6-6 00:56 編輯Windows Server 2003 如何…

C++內聯(inline)函數

內聯函數 內聯函數是一種特殊類型的函數,內聯函數在定義或聲明時前面加上“inline”關鍵字。比如: inline int max(int a,int b) { return (a>b)?a:b; } 內聯(inline)是內聯擴展(inline expansion)的簡…

我的python學習筆記全集_記錄我的Python學習筆記

不想再像以前那樣,什么都從頭開始學習語法、總結語法,這樣反而會過分糾結于語法,耽誤了開發,畢竟語言的主要屬性是工具,次要的屬性是語言本身。所以還是先熟練使用語言去進行開發,等足夠熟悉了,…

HDU 5794:A Simple Chess(Lucas + DP)

題目鏈接:http://acm.split.hdu.edu.cn/showproblem.php?pid5794 題意:讓一個棋子從(1,1)走到(n,m),要求像馬一樣走日字型并只能往右下角走。里面還有r個障礙點不能經過或者到達&am…

php源碼分析之PHPAPI宏的作用

在PHP源碼中,我們經常會看到很多函數前面有個PHPAPI,但這是什么呢? 于是我在php源碼/main/php.h中找到了它的定義 #ifdef PHP_WIN32 # include "tsrm_win32.h" # include "win95nt.h" # ifdef PHP_EXPORTS # …

15分鐘內開始使用Amazon Web Services和全自動資源調配

在等待一個新項目時,我想學習一些有用的東西。 而且由于在許多項目中我們需要評估和測試正在開發的應用程序的性能,而很少有足夠的硬件來生成實際負載,因此我決定學習更多有關按需在云中按需配置虛擬機的知識,即Amazon Web Servic…

解析JVM內存區域組成

在方法(代碼塊)中定義一個變量時,java就在棧中為這個變量分配JVM內存空間,當超過變量的作用域后,java會自動釋放掉為該變量所分配的JVM內存空間;而在堆中分配的JVM內存由java虛擬機的自動垃圾回收器來管理。…

python打開瀏覽器后帶cookie_Python爬蟲使用瀏覽器的cookies:browsercookie

很多用Python的人可能都寫過網絡爬蟲,自動化獲取網絡數據確實是一件令人愉悅的事情,而Python很好的幫助我們達到這種愉悅。然而,爬蟲經常要碰到各種登錄、驗證的阻撓,讓人灰心喪氣(網站:天天碰到各種各樣的爬蟲抓我們網…

VS插件開發

參考資料: VS插件開發 - 個性化VS IDE編輯器 自己動手編寫一個VS插件(一) VS Addin插件基本開發入門 VS Addin插件配置、部署 轉載于:https://www.cnblogs.com/wangwangfei/p/5830081.html

使用AspectJ,Javassist和Java Proxy進行代碼注入的實用介紹

靜態地或在運行時將代碼片段注入已編譯的類和方法中的功能可能會很有幫助。 這尤其適用于在沒有源代碼的第三方庫中或在無法使用調試器或探查器的環境中對問題進行故障排除。 代碼注入對于處理涉及整個應用程序的問題(例如性能監視)也很有用。 以這種方式…

Java中的變量

java類的成員變量有兩種:一種是被static關鍵字修飾的變量,叫類變量或者靜態變量;另一種沒有static修飾,為實例變量。 在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。 在程序運行時的…

無限漫游

一、FAT AP架構下,AP設備不做認證時: (1) AP1,AP2正常工作,發送Beacon幀,向STA通告支持的無線服務; (2) STA搜索到AP1的信號,向AP1發Probe Request,請求獲取AP1所提供的無線服務;AP…

uni-app內置地圖軌跡_MIUI11 新增親情守護,支持安全圍欄、運動軌跡功能

點擊右上角關注我們,每天給您帶來最新最潮的科技資訊,讓您足不出戶也知道科技圈大事!日前,小米 MIUI 體驗總負責人 MIUI小凡 在微博上為大家預告了 MIUI11 的新特性「親情守護」,并表示「在親情守護中,我們…

:before與:after偽類的應用

1.小三角樣式 .tip{ position:relative; display:inline-block; width:100px; margin:100px; padding:30px 20px; color:#fff; border:1px solid #666; border-radius:5px; background-color:rgba(0,153,51,1);}.tip:before{ content:; posit…

小心重載API方法

重載方法是API設計中的重要概念,尤其是當您的API是流利的API或DSL( 特定于域的語言 )時。 對于jOOQ就是這種情況,在這種情況下,您經常想使用與完全相同的方法名稱來與庫進行各種交互。 示例:jOOQ條件 pac…

phpcms 下載模型列表頁直接點擊下載

下載模型設置本地下載 列表頁模板直接調用 <article class"prjDown"><p class"prjDownTitle">方案下載</p><nav class"prjDownNav"><ul>{pc:content action"lists" catid"$catid" num"3…

為什么Java中類方法不能訪問實例方法

我們已經知道類體中的方法分為實例方法和類方法兩種&#xff0c;用static修飾的是類方法。二者有什么區別呢&#xff1f;當一個類創建了一個對象后&#xff0c;這個對象就可以調用該類的方法。 當類的字節碼文件被加載到內存時&#xff0c;類的實例方法不會被分配入口地址&…