1. ホーム
  2. c

[解決済み】整数ベースのべき乗関数を実装する最も効率的な方法 pow(int, int)

2022-03-31 05:17:13

質問

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;
}

非対称暗号において、巨大な数に対してモジュラーエクスペネーションを行うための標準的な方法である。