下面是使用欧几里德分区在java中查找modulo(n,d)的两个表达式
(d + (n % d)) if (n < 0)
(n%d) if n > 0
我的问题是,
目前尚不清楚,如果n&lt; 0?
,如何在编写上述表达式之前以数学方式思考请用数学方法帮助我,因为我不想记住逻辑!!!
答案 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
正是您所寻找的。 p>