3

我正在用 Java 进行一些错误更正,长话短说;

在模式 11 下:

-4 mod 11 = 7

我已经通过使用 Google 的计算器和几个在线模计算器确认了这一点,但我终其一生都无法弄清楚如何用 Java 做到这一点。

我在想我需要使用逆表来找到正确的数字,但我似乎在绕圈子。

任何输入将不胜感激。

预先感谢

托尼

4

5 回答 5

6

以下将计算n mod 11任何整数n

(n % 11 + 11) % 11

的结果n % 11在范围内-10... 10。随后的加法和第二个模运算相加11n % 11当且仅当后者为负。

这个公式适用于任何基数:只需11用另一个正整数替换。

于 2011-10-23T22:24:24.873 回答
3

只需编写一个满足您要求的 mod 函数就很简单了。这里的例子:

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

比 using 清晰得多% 11 + 11) % 11,而且操作一看就明白了。比mod(32, 11)更清晰,并且节省了额外的操作。32 mod 11(32 % 11 + 11) % 11%

于 2011-10-23T22:28:04.343 回答
1

根据Java 语言规范,Java 的%运算符是余数运算符,而不是模运算符

于 2011-10-23T22:26:49.740 回答
0

我认为如果你取正模(4 mod 11)并从后一个值中减去它应该每次都能给你正确的答案。(即 11 - (4 mod 11) = 7)我还没有真正经历过并测试过它,但它似乎是有道理的。

于 2011-10-23T22:25:45.950 回答
0

尝试使用BigInteger#mod

于 2011-10-23T22:26:43.517 回答