べき乗剰余を実行するために、次の簡単な関数を作成しました。ただし、指数パラメーターが約261,000を超えると、セグフォールトが発生します。どうしてこれなの?そして、どうすればそれを修正できますか?
64ビットUbuntuでgccを使用してコンパイルしています。
ありがとう
unsigned int modex(unsigned int base, unsigned int exponent, unsigned int modulus)
{
if(exponent == 1)
return base;
base = base % modulus;
if(exponent == 0 || base == 1)
return 1;
return (modex(base, exponent - 1, modulus) * base) % modulus;
}