Python计算 1的9999999次方,不到1s就得出答案!是如何处理的?
生活随笔
收集整理的這篇文章主要介紹了
Python计算 1的9999999次方,不到1s就得出答案!是如何处理的?
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題引發(fā)
網(wǎng)友計(jì)算1的9999999次方,不到1s就得出答案。那python是如何處理的?
>>> a=1 >>> i=a**9999999 >>> print(i) 1而計(jì)算2的2222222次方,python卻算了將近半分鐘(驍龍845平臺(tái)),
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:895817687 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! >>> a=2 >>> i=a**2222222 >>> print(i) 略去,太長(zhǎng)相信對(duì)于python還不太熟悉的朋友會(huì)感到很奇怪,為什么內(nèi)部處理上時(shí)間差距這么大,python究竟是如何運(yùn)作的呢?
問(wèn)題解答
求解形如a^n的值,可以使用快速冪算法,只需要O(logn)次乘法運(yùn)算。每次乘法運(yùn)算的時(shí)間是與數(shù)的位數(shù)的平方成正比。
計(jì)算1^n無(wú)需考慮乘法運(yùn)算的時(shí)間,所以總共只需要O(logn)的時(shí)間,幾乎不需要時(shí)間。
而計(jì)算2n需要考慮乘法運(yùn)算的時(shí)間,數(shù)的位數(shù)是O(n)級(jí)別的,所以總共需要O(n2logn)的時(shí)間。不過(guò)實(shí)際每次乘法的時(shí)候數(shù)的位數(shù)要比n小很多,所以實(shí)際運(yùn)行時(shí)間還是比較快的。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Python计算 1的9999999次方,不到1s就得出答案!是如何处理的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python数学--假设班里25个同学,
- 下一篇: 如果用中文编程....那么... (如果