`
lovnet
  • 浏览: 6921001 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

求n次方的算法

阅读更多

今天看交大的数据结构书,看到了一个计算n次方的好算法,它的时间复杂度只有logN,

一般我们可能用循环,时间复杂度是O(n),当这个算法只有O(logN) 确切点说是O(6logN)

算法贴来...真高兴!

intpower(intx,intn)
{
intm=0;
m
=n;
intt=1;
while(m>0)
{
m
/=2;
t
*=2;
}
m
=n;
inty=1;
while(t>1)
{
t
/=2;
y
*=y;

if(m>=t)
{
y
*=x;
m
-=t;
}
}
returny;
}

原理

一般的对于 a (2x + b)= a2x * a b

所以就有

(b = 0时 ) : a 2x+ b = (ax)2 ;

(b = 1):a 2x+ b = (a x)2 * a ;

对于 an ,先把 n的二进制表示写出,那么有

an = a (n1 n2 n3 n4 ..)(2) = …

从左到右就可以如下表(n = 15的时候 1111)

n的二进制位

1

1

1

1

累乘

a

a2 * a = a3

(a3)2 *a= a7

(a7)2 * a = a15

就这样的.

分享到:
评论

相关推荐

    蛮力法、分治法、减治法求a的n次方,并比较运行时间

    分别用蛮力法、分治法、减治法求a的n次方,并比较运行时间

    java 求n的n次方

    关于标签"java 求n的n次方",这可能是对Java编程中幂运算概念的一个特定关注点,尤其是在处理算法和数学问题时。例如,在解决复杂问题时,如快速幂算法(Fast Exponentiation)用于高效计算大整数的幂,这是一种在...

    求n的n次方的数字根,c源程序,极精妙算法

    一个简单有精妙的算法,求N的n次方的数字根。

    用C++求a的n次方的值

    这个资源所包含的程序是用C++编程来完成求a的n次方的算法

    a的n次方 C++

    本篇文章将详细介绍如何使用C++语言通过不同的算法实现a的n次方的计算,并对这些算法进行性能上的对比分析。 #### 目标 本文的目标是通过三种不同的算法:蛮力法、分治法以及减治法来计算a的n次方,并比较它们在...

    易语言计算N次方

    在“易语言计算N次方”这个主题中,我们将深入探讨如何使用易语言来执行基本的数学运算,特别是计算数字的N次方、求N次方根以及相关的算法实现。 首先,计算N次方是指将一个数(底数)自乘N次,其公式为`a^n`,其中...

    一个开N次方的算法

    采用牛顿迭代发的开n次方的计算方法,可以自己设置精度(如0.00001)结果显示迭代次数等

    大数的n次方

    例如,如果要求计算x的n次方,我们可以先计算x*x,再对结果求n/2次方,直到n变为1。这种方法称为“平方再乘”(Square-and-Multiply)算法,其时间复杂度为O(logn)。 在实际编程中,C++标准库提供了`...

    计算x的n次方

    该算法基于以下事实:x的n次方可以分解为x的2k次方乘以x的m次方(其中m为奇数),然后通过递归计算x的2k次方和x的m次方,最后相乘得到结果。这样,原本需要n次乘法的操作可以减少到最多log2(n)次,大大提高了计算...

    2的N次方(N为<100的正整数,可扩展)

    ### 2的N次方(N为的正整数,可扩展) #### 知识点 1. **基本概念与应用场景** - **2的N次方**:指的是数字2乘以自己N次的结果。例如,2的3次方表示2×2×2=8。 - 在计算机科学、数学以及日常生活中都有广泛的...

    实现一个数的N次方源码

    根据给定的文件信息,我们可以总结出以下关于“实现一个数的N次方源码”的相关知识点: ### 1. 程序目的与功能 该程序的主要目的是计算并输出一个给定数值(记作a)的指定次数幂运算结果(记作b)。即用户可以输入...

    判断是否为2的N次方

    在计算机科学中,判断一个整数是否为2的N次方是一个常见的问题,尤其是在位操作、数据结构优化和算法设计中。2的N次方表示为2^n,其中n是正整数。这类数字在内存分配、数组下标计算、哈希函数设计等方面有着特殊的...

    2的n次方 单链表操作 c语言

    本文将深入解析“2的n次方单链表操作”这一主题,通过C语言实现,不仅展示了如何利用单链表进行数学计算,还涉及了数据结构的灵活运用与算法设计。 ### 一、理解2的n次方运算 首先,“2的n次方”是一个基本的数学...

    输出1到10的N次方

    标题“输出1到10的N次方”指的是一个编程任务,它要求编写程序来生成1到10的任意整数n次幂的结果,并将这些结果以整数的形式输出。这个任务涉及到计算机科学中的基础算法设计,特别是递归方法。递归是一种在函数或...

    迭代法开n次方计算器

    迭代法开n次方计算器是一种计算数学中求解n次方根的有效算法,它通过不断逼近目标值来求解,尤其适用于计算机程序实现。在实际应用中,迭代法常常用于解决那些不能直接求解或者计算量过大的问题,比如求平方根、...

    oj题目:计算浮点数的n次方

    计算浮点数的n次方,在北京大学的OJ网站上的题目,已经提交AC。可以作为参考。 原题如下: Description Problems involving the computation of exact values of very large magnitude and precision are common. ...

    编程求x的n次方-用C语言程序设计:求x的n次方的函数 .pdf

    除了使用`pow()`函数外,也可以通过循环或者递归的方式自定义实现求幂的函数,这对于理解算法和控制精度可能会更有帮助。例如,可以使用迭代法实现一个简单的求幂函数: ```c double my_pow(double x, int n) { ...

    分治法 算法

    分治法是一种重要的计算机科学算法,它将一个大问题分解为若干个规模较小的相同问题,然后逐个解决这些小问题,最终将小问题的解组合得到原问题的解。这种策略有助于降低问题的复杂性,并提高算法的效率。下面我们将...

Global site tag (gtag.js) - Google Analytics