Java модульный обратный - PullRequest
       12

Java модульный обратный

3 голосов
/ 24 октября 2011

Я делаю некоторые исправления ошибок в Java и, если коротко, коротко;

Под модом 11:

-4 mod 11 = 7

Это я подтвердил, используя калькулятор Google ипару онлайн-калькуляторов по модулю, но я не могу понять, как это сделать в Java.

Я думаю, что мне нужно использовать обратную таблицу, чтобы найти правильное число, но мне кажется,ходить по кругу.

Любой вклад будет приветствоваться.

Заранее благодарны

Тони

Ответы [ 5 ]

6 голосов
/ 24 октября 2011

Следующее будет вычислять n mod 11 для любого целого числа n:

(n % 11 + 11) % 11

Результат n % 11 находится в диапазоне -10 ... 10.Последующее добавление и вторая операция по модулю добавляют 11 к n % 11, если последнее отрицательно.

Эта формула работает для любой базы: просто замените 11 другим положительным целым числом.

3 голосов
/ 24 октября 2011

Было бы довольно просто написать мод-функцию, которая делает то, что вам нужно. Пример здесь :

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
    {
        result += y;
    }
    return result;
}

Это гораздо понятнее, чем использование % 11 + 11) % 11, и эта операция имеет смысл сразу же, когда вы на нее смотрите. mod(32, 11) более четко 32 mod 11, чем (32 % 11 + 11) % 11, и сохраняет дополнительную операцию %.

1 голос
/ 24 октября 2011
0 голосов
/ 24 октября 2011

Попробуйте использовать BigInteger # mod .

0 голосов
/ 24 октября 2011

Я думаю, что если вы возьмете положительное значение по модулю (4 mod 11) и вычтете из последнего значения, это должно дать вам правильный ответ каждый раз. (т.е. 11 - (4 mod 11) = 7) Я действительно не прошел и не проверил это, но это, кажется, имеет смысл.

...