PowerMod を使用して剰余逆数を見つけるアルゴリズムを Mathematica に実装しました。このアルゴリズムを C で実装する必要があり、gmp とその関数mpz_powmを使用することにしました。明らかに同じことを行います。問題は、同じ値が得られないことです。たとえば、Mathematica で実行すると、次のようになります。
PowerMod[30030, -1, 43] = 35
一方、mpz_pwmは 16を返します。
PowerMod[30030, -1, 71] = 8
一方、mpz_pwmは 46 を返します (これらが十分な例であることを願っています)。オンラインで見つけることができたさまざまなモジュラー逆アルゴリズムも試しましたが、それらも異なる値を示します。しかし、Mathematica は正しいと思います。ここで何が起こっているか知っている人はいますか?