私は単純な方程式を実装しようとしています:
i,j = -Q ± √(Q 2 -4PR) / 2P
そうするために、私は次のコードを持っています (注: P = 10. Q = 7. R = 10):
//Q*Q – 4PR = -351 mod 11 = -10 mod 11 = 1, √1 = 1
double test = Math.sqrt(modulo(((Q*Q) - ((4*P)*R))));
// Works, but why *-10 needed?
i = (int)(((-Q+test)/(P*2))*-10); // i = 3
j = (int)(((-Q-test)/(P*2))*-10); // j = 4
簡単に言うと、test は方程式の最初の部分を取り、それを 0 から 11 の間のゼロ以外の整数に変更してから、i と j を書き込みます。i と j は正しい数値を返しますが、何らかの理由で、それらを正しくするには *-10 が必要です (正しい値を得るために私が推測した数値)。
可能であれば、上記の式を実行するより良い方法を見つけたいと思います。私のやり方は間違っているようで、うまくいくからです。ハッキングして機能させるのではなく、方程式が示すように実行したいと思います。