科学计算器的乘方怎么弄 大数相乘,快速算法?

[更新]
·
·
分类:行业
4179 阅读

科学计算器的乘方怎么弄

大数相乘,快速算法?

大数相乘,快速算法?

计算乘方是有快速算法的,并不是一个一个蛮力乘上去的。比如想算2^10000,计算机先算2^5000,再算一次平方,即两个数的乘法。而为了计算2^5000,计算机会先算2^2500再算一次平方。这个算法叫快速幂算法,对于2^N的计算,如果认为每次乘法的时间复杂度是O(1)的话,那整体的时间复杂度只有O(logN)级别。
一般来说,为了实现快速幂算法,首先把指数做二进制表示,比如你要算A的23次方,可以把23分解为16 4 2 1。然后计算BA^2,CB^2A^4,D(C^2)^2A^16。最终结果为ABCD相乘。
但这里乘法的复杂度并不是O(1),因为它是无限精度的,也就是所谓的大数乘法。大数乘法也有很多算法,最朴素的,类似手算的方法,复杂度是O(N^2),其他一些方法有分治法,复杂度O(N^1.58),FFT方法,复杂度O(N logN loglogN)等。快速幂的O(logN)次大数乘法中,最复杂的只有最后一次,也就是2^5000的那次,前面的复杂度几何级数衰减,所以整体复杂度也就是最后一次计算的复杂度。如果你用FFT方法的话,复杂度也就是比线性多了一点点,一般计算机上随便算算就出来了。
CPU没有全速运行是因为这个程序只用了1个核心在做计算,而你显示的是总的使用率,所以大概会保持在四分之一的水平。
是否用到了移位操作涉及Python大数运算的具体设计,我不是很懂就不多讲了。但原理上讲也是很有可能的,如果用比特串存储大数的话,那么计算2^N只需要在数组的第N位设置一个1,其余设置为0即可,那么转换到十进制是这段代码中最消耗计算量的部分。

函数计算器怎么用x的几次方?

一般的函数计算器的任意乘方键的第二功能(按SHIFT键之后再按该键)即是任意开方键。例如:比如5开0.8次方在计算器上的输入效果就是这样的(以卡西欧fx-ES PLUS系列计算器为例):使用的时候注意不能将乘方键和开方键混淆,如果不会使用一个数开x次方,可以试试一个数的1/x次方:

v模式下乘方怎么输入?

v模式下乘方输入其实很方便的,就是使用组合键“shift 6”。
v模式下的运算输入其实和科学计算器输入是一样的,无非就是括号套括号而已,最外面左边括号对应最外面右边的括号,顺带给大家普及一下:
乘号:输入 *,按shift 8
除号:英文状态按“?/”键,输入“/”。
乘方:比如2的三次方,先输入2,再输入shift 6,再输入3,就变成:2^38。
开方:比如8开三次方,先输v,先输入8,再输入shift 6,再输入(1/3)如下:
大家输入乘号就可以用*代替,除号用/代替,乘方就是^,开方就是^后面(1/2)或(1/3)或(1/4)等等。