2014-03-07 73 views
-1

下面是兩個表達式來查找模(N,d)在Java中,利用歐氏師數學方法推導模表達

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

(n%d) if n > 0 

我的問題是,

我不明確,如何在數學思考在寫上面的表達式之前,如果n < 0?

請幫我用數學方法,因爲我不想記住邏輯!

+4

邏輯*是*數學。 – user2357112

+1

我不太瞭解你的困境。 – leigero

回答

1

如果您想記住n % d所做的操作,它會返回(-d, d)範圍內的值,並將其與n的符號相匹配。

如果你想知道如何得到一個肯定的結果(或者嚴格來說,結果匹配d的符號而不是n),那麼比if更容易。

由於(n % d)在上述範圍內(-d, d),這意味着(n % d) + n在上述範圍內(0, 2d),所以((n % d) + n) % d是範圍[0, d)的值,全等爲n。

因此,((n % d) + n) % d是你在找什麼。