a と b の非常に大きな値に対して (a^b) % c を計算できるようにする必要があります (これらは個別に限界を押し上げており、a^b を計算しようとするとオーバーフロー エラーが発生します)。十分に小さい数の場合、単位 (a^b)%c = (a%c)^b%c を使用すると機能しますが、c が大きすぎる場合、これは実際には役に立ちません。mod 操作を 1 つずつ手動で行うループを作成しました。
private static long no_Overflow_Mod(ulong num_base, ulong num_exponent, ulong mod)
{
long answer = 1;
for (int x = 0; x < num_exponent; x++)
{
answer = (answer * num_base) % mod;
}
return answer;
}
しかし、これには非常に長い時間がかかります。実際に a を b 乗する必要がなく、かつ時間のかかるループを使用せずに、この操作を行う簡単で高速な方法はありますか? 他のすべてが失敗した場合は、巨大なデータ型を表す bool 配列を作成し、ビットごとの演算子でこれを行う方法を見つけることができますが、もっと良い方法が必要です。