首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java模块化划分

Java模块化划分
EN

Stack Overflow用户
提问于 2011-10-23 00:11:02
回答 2查看 14.6K关注 0票数 1

我正在做一些纠错,我需要在Java中除以mod 11下的两位数。

现在我知道了,通过使用模数计算器:

代码语言:javascript
复制
9/1 mod 11 = 9
2/10 mod 11 = 9

问题出在让Java计算这一点上。在Java中:

代码语言:javascript
复制
(9 / 1) % 11 = 9 - This is fine
(2 / 10) % 11 = 0 - This is not correct.

我知道Java在技术上不能执行模运算,我的一部分想法是我要么需要以某种方式计算逆数,要么使用数组来存储可能的输出值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 04:07:25

我想你要找的是如何求模11的乘法逆。

10是它自己的模数11的逆数,所以它不是一个特别有用的例子。取而代之的是,让我们找到7模11的乘法逆。

为此,我们求解整数形式的a和b的方程7a + 11b =1。我们使用Euclidean algorithm为a和b找到合适的值。在这种情况下,我们可以取a= -3和b = 2。我们忽略b的值,并取a(= -3)是7模11的逆数。在模11算术中,7乘以-3等于1。

如果我们不喜欢负数,我们可以取7模11的倒数为8(= -3 + 11)。

因此,我们不是除以7的模11,而是乘以-3或8。例如,在模11算术中,9/7=9*8= 72 = 6。

如果你只有一个模数可以使用(例如,你只使用模数11),那么预先计算一个模数为11的乘法逆表并在计算中使用它可能会更好。

票数 5
EN

Stack Overflow用户

发布于 2011-10-23 02:04:18

不知道这是不是你想要的,但是...

代码语言:javascript
复制
public static int divmod(int dividend, int divisor, int mod) {
    if (dividend >= divisor)
        return (dividend / divisor) % mod;
    return mod - dividend;
}

测试:

代码语言:javascript
复制
divmod(9, 1, 11)  // returns 9
divmod(2, 10, 11) // returns 9
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7860795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档