导出模数表达式的数学方法

时间:2014-03-07 08:51:54

标签: java modulo

下面是使用欧几里德分区在java中查找modulo(n,d)的两个表达式

(d + (n % d))  if (n < 0)

(n%d)  if n > 0

我的问题是,

目前尚不清楚,如果n&lt; 0?

,如何在编写上述表达式之前以数学方式思考

请用数学方法帮助我,因为我不想记住逻辑!!!

1 个答案:

答案 0 :(得分:1)

如果你想记住n % d的作用,它会返回(-d, d)全等模式d到n的值,并匹配n的符号。

如果您想知道如何获得正面结果(或严格来说,结果与d的符号相匹配而不是n),则比if更简单。

由于(n % d)位于(-d, d)范围内,这意味着(n % d) + n位于(0, 2d)范围内,因此((n % d) + n) % d[0, d)范围内的值1}},与n。一致。

因此,((n % d) + n) % d正是您所寻找的。