Java 模逆
我正在用 Java 进行一些错误纠正,长话短说;
在 mod 11 下:
-4 mod 11 = 7
我已经通过使用 Google 计算器和几个在线模计算器确认了这一点,但我一生都无法弄清楚如何在 Java 中做到这一点。
我想我需要使用逆表来找到正确的数字,但我似乎在兜圈子。
任何意见将不胜感激。
提前感谢
托尼
I'm doing some error correction in Java and to cut a long story short;
Under mod 11:
-4 mod 11 = 7
This I've confirmed by using Google's calculator and a couple of online modulo calculators, but I cannot for the life of me figure out how to do it in Java.
I'm thinking that I need to use an inverse table to find the correct number but I seem to be going round in circles.
Any input would be appreciated.
Thank in advance
Tony
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
以下代码将计算任何整数
n
的n mod 11
:n % 11
的结果在-10
范围内代码>...<代码>10。随后的加法和第二个模运算将11
与n % 11
相加(当且仅当后者为负)。此公式适用于任何基数:只需将
11
替换为另一个正整数即可。The following will compute
n mod 11
for any integern
:The result of
n % 11
is in the range-10
...10
. The subsequent addition and the second modulo operation add11
ton % 11
iff the latter is negative.This formula works for any base: just replace
11
with another positive integer.只需编写一个满足您要求的 mod 函数就非常简单了。示例此处:
它比使用
% 11 + 11) % 11
,这个操作一看就明白了。mod(32, 11)
比(32 % 11 + 11) % 11
更清楚32 mod 11
,并且节省了额外的 < code>% 操作。It'd be pretty simple to just write a mod function which does what you require. Example here:
It's much clearer than using
% 11 + 11) % 11
, and the operation makes sense immediately when you look at it.mod(32, 11)
is more clearly32 mod 11
than(32 % 11 + 11) % 11
, and it saves an extra%
operation.根据 Java 语言规范,Java 的 < code>% 运算符 是余数运算符,而不是模运算符。
According to the Java Language Spec, Java's
%
operator is a remainder operator, not a modulo operator.我认为如果你取正模(4 mod 11)并从后一个值中减去,它每次都会给你正确的答案。 (即 11 - (4 mod 11) = 7)我还没有真正经历和测试它,但它似乎是有道理的。
I think if you take the positive modulo (4 mod 11) and subtract from the latter value it should give you the right answer every time. (i.e. 11 - (4 mod 11) = 7) I haven't really gone through and tested it but it seems to make sense.
尝试使用 BigInteger #mod。
Try using BigInteger#mod.
我有一个方法可以计算 a 的模式逆。 TC O(logm) SC O(logm)。我们使用欧几里得算法:“如果 GCD(a,m) == 1,a 和 m 是互质的”。请使用下面的链接。
Stackoverflow 帖子
I have a method that can calculate the mode inverse of a. TC O(logm) SC O(logm). We are using the Euclid algorithm: “a and m are co-primes if GCD(a,m) == 1”. Please use the link below.
Stackoverflow post