用C将一个整数求幂最有效的方法是什么?

// 2^3
pow(2,3) == 8

// 5^5
pow(5,5) == 3125

推荐答案

平方求幂.

int ipow(int base, int exp)
{
    int result = 1;
    for (;;)
    {
        if (exp & 1)
            result *= base;
        exp >>= 1;
        if (!exp)
            break;
        base *= base;
    }

    return result;
}

这是在非对称密码术中对大数进行模幂运算的标准方法.

C++相关问答推荐

ATmega328P USART发送字符重复打印

VS代码C/C++扩展intellisense无法检测环境特定函数'

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

如何创建由符号组成的垂直结果图形?

以前版本的tty_ldisc_ops.ioctl()是否也需要文件参数?

为什么内核使用扩展到前后相同的宏定义?

如何在C客户端应用程序的ClientHello消息中添加自定义扩展?

将 struct 传递给函数

X64:并发写入布尔数组

如何在STM8项目中导入STM8S/A标准外设库(ST VisualDeveloper)?

tick.q中的Kdb+键控表语法

cairo 剪辑区域是否存在多个矩形?

处理来自浏览器的HTTP请求

在吉陀罗中,_2_1_和CONCAT11是什么意思?

C编译和运行

强制GCC始终加载常量(即只读),即使启用了优化

如果类型是新的,offsetof是否与typeof一起工作?

如何在C中计算包含递增和递减运算符的逻辑表达式?

如何为avr atmega32微控制器构建C代码,通过光电二极管捕获光强度并通过串行通信传输数据

如何正确探测平台设备?