当前位置:首页 » 操作系统 » 幂对算法

幂对算法

发布时间: 2022-03-07 11:01:18

❶ 快速幂算法原理

快速幂
顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log2N), 与朴素的O(N)相比效率有了极大的提高。

中文名
快速幂
外文名
Fast Power
时间复杂度
log(n)
性质
快速算底数的n次幂
快速
导航
实现

代码比较
原理
快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。
让我们先来看一个简单的例子:
3^10=3*3*3*3*3*3*3*3*3*3
3^10=(3*3)*(3*3)*(3*3)*(3*3)*(3*3)
3^10=(3*3)^5
3^10=9^5
9^5=(9^4)*(9^1)
9^5=(9^4)*(9^1)
9^5=(6561^1)*(9^1)
以下以求a的b次方来介绍[1]
把b转换成二进制数。
该二进制数第i位的权为
例如

11的二进制是1011

因此,我们将a11转化为算
实现
快速幂可以用位运算来实现
b and 1{也就是取b的二进制最低位(即第0位)判断b是否为奇数,是则为1}
b shr 1{就是去掉b的二进制最低位(即第0位)}
C++实现为
b & 1//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶
b>>1//把b的二进制右移一位,即去掉其二进制位的最低位
以下为pascal的实现:
var a,b,n:int64;
function f(a,b,n:int64):int64;
var t,y:int64;
begin
t:=1; y:=a;
while b<>0 do begin
if(b and 1)=1 then t:=t*y mod n;
y:=y*y mod n;{这里用了一个技巧,y*y即求出了a^(2^(i-1))不知道这是什么的看原理
a^(2^(i-1))*a^(2^(i-1))=a^(2^i)
而且一般情况下a*b mod c =(a mod c)*(b mod c) mod c}
b:=b shr 1;{去掉已经处理过的一位}
end;
exit(t);
end;
begin
read(a,b,n);{n是模}
writeln(f(a,b,n));
end.
[1]
以下为C的实现,为了方便与pascal的对照,变量全部与上面相同.可以对照查看。
递归版:[2]
ll pow(ll a,ll i){
if (i==0) return 1;
int temp=pow(a,i>>1);
temp=temp*temp%MOD;
if (i&1) temp=(ll)temp*a%MOD;
return temp%MOD;
}
非递归版:
ll f(ll a,ll b,ll n){
int t,y;
t=1; y=a;
while (b!=0){
if (b&1==1) t=t*y%n;
y=y*y%n; b=b>>1;
}
return t;
}

❷ 关于幂运算的算法

2^39=(2^10)^4/2

❸ 幂运算所有的运算法则。

1、同底数幂的乘法:

aᵐ·aⁿ·aᵖ=aᵐ⁺ⁿ⁺ᵖ(m, n, p都是正整数)。

2、幂的乘方(aᵐ)ⁿ=a(ᵐⁿ),与积的乘方(ab)ⁿ=aⁿbⁿ

3、同底数幂的除法:

(1)同底数幂的除法:aᵐ÷aⁿ=a(ᵐ⁻ⁿ)(a≠0, m, n均为正整数,并且m>n)

(2)零指数:a⁰=1 (a≠0);

(3)负整数指数幂:a⁻ᵖ= (a≠0, p是正整数),当a=0时没有意义,0⁻²,0⁻²都无意义。

3、负指数幂

当底数n≠0时,由于n⁰÷nᵃ=1÷nᵃ=1/nᵃ,根据幂的运算规则可知,n⁰÷nᵃ=n⁰⁻ᵃ=n⁻ᵃ=1/nᵃ

因此定义负指数幂如下:a⁻ᵖ=1/aᵖ,a≠0。

❹ 求取曲线的幂函数的算法公式

y=αx^(-β)对两边同取以x为底的log
logx(y)=logx(a)+b

ln(y)/ln(x)=ln(a)/ln(x)+b
ln(y)=ln(a)+b*ln(x)
令X=ln(x), Y=ln(y)
有Y=b*X+ln(a)
之后按线性拟合方法拟合

❺ 幂模运算(算法)的小问题

换一种形式
把和换成1+4*(1+4*(1+4*(1+4*(。。。))))
然后最内层的小括号的数据对10007取余
慢慢退到最外层就是结果了
如果直接先把和求出来 就溢出了

❻ 实对称距阵指数幂的算法

如果有n阶矩阵A,其各个元素都为实数,矩阵A的转置等于其本身(AT = A) ,则称A为实对称矩阵。

如果有n阶矩阵A,其各个元素都为实数,且aij=aji i,j=1,2,...,n(即
这儿的T表示转置),则称A为实对称矩阵。

特点

1.实对称矩阵A的不同特征值对应的特征向量是正交的。
2.实对称矩阵A的特征值都是实数,特征向量都是实向量。
3.n阶实对称矩阵A必可对角化,且相似对角阵上的元素即为矩阵本身特征值。
4.K重特征值必有K个线性无关的特征向量,或者说必有秩r(λE-A)=n-k,其中E为单位矩阵。
5.实对称矩阵的所有特征值都是实数。

❼ 次方的快速算法

次方有两种快速算法:

第一种是直接用乘法计算,例:3⁴=3×3×3×3=81。

第二种则是用次方阶级下的数相乘,例:3⁴=9×9=81

次方最基本的定义是:设a为某数,n为正整数,a的n次方表示为aⁿ,表示n个a连乘所得之结果,如2⁴=2×2×2×2=16。次方的定义还可以扩展到0次方和负数次方等等。

负数次方

由5的0次方继续除以5就可以得出5的负数次方。

例如: 5的0次方是1 (任何非零数的0次方都等于1。)

5的-1次方是0.2 1÷ 5 =0.2

5的-2次方是0.04 0.2÷5 =0.04

因为5的-1次方是0.2 ,所以5的-2次方也可以表示为0.2×0.2=0.04

5的-3次方则是0.2×0.2×0.2=0.008

由此可见,一个非零数的-n次方=这个数的倒数的n次方。

(7)幂对算法扩展阅读:

0的次方

0的任何正数次方都是0,例:0⁵=0×0×0×0×0=0

0的0次方无意义。

一个数的0次方

任何非零数的0次方都等于1。原因如下:

通常代表3次方

5的3次方是125,即5×5×5=125

5的2次方是25,即5×5=25

5的1次方是5,即5×1=5

由此可见,n≧0时,将5的(n+1)次方变为5的n次方需除以一个5,所以可定义5的0次方为:

5 ÷ 5 = 1。

❽ 高中数学幂的算法

❾ 幂的算法

int fun(int a, int b)

{
int result = 1;

for(int i = 0; i < b; i++)

result *= a;

return result;

}

❿ 求幂函数算法怎么写最快

用二分求幂的时间复杂度是 log(n),采用位运算的二分法应该是最快的。网络搜“二分求幂算法”有大量代码,就不复制粘贴了。

热点内容
数据库设计模板 发布:2024-11-15 00:47:25 浏览:825
编程的悟性 发布:2024-11-15 00:47:24 浏览:733
主流可编译语言 发布:2024-11-15 00:42:23 浏览:729
excel缓存清除 发布:2024-11-15 00:39:53 浏览:486
机械键盘可编程 发布:2024-11-15 00:39:09 浏览:912
php判断字符开头 发布:2024-11-15 00:35:33 浏览:507
网易苹果游戏怎么转移到安卓 发布:2024-11-15 00:07:52 浏览:270
win7php环境搭建 发布:2024-11-15 00:06:55 浏览:17
erpjava 发布:2024-11-14 23:52:23 浏览:253
电脑版地平线四怎么连上服务器 发布:2024-11-14 23:46:42 浏览:472