※ 引述《a100500 (黑色幽默)》之銘言:
: 如題...
: 我們都知道 1除3 = 0 餘 1
: 4除3 = 1 餘 1
: 但是 -1除3的餘數到底是多少呢?
: 至少我用JAVA跟R算出來的答案是不一樣的...
: 到底正解是多少?!
: 除法好難!!!!
好的,關於你的問題,我很認真看了一遍,還去翻了原文書
首先呢,你的例子就錯了
why?
先這樣說吧
小時候一定有這種經驗
就是在上數學課的時候
老師看著你寫的數學作業破口大罵
『都講了幾次你還是沒在聽!"除" 跟 "除以"是不一樣的!』
當時無辜的我們,雖然有在聽只是沒記住,卻還是一句話也不敢吭
雖然被罵完還是聽不懂老師洗勒工啥毀,反正做就對惹
然後不知道多久的數年過後
才知道"除" 跟 "除以" 是不同的
簡單說 1除3 ,其實是 3除以1 也就是 3/1 = 3才對
4除3 ,其實是 3除以4 也就是 3/4 = 0......3才對
所以原PO一開始舉的例子就是錯的了
不過沒關係,大家都知道你的意思
所以我們回來你的問題
※ 引述《a100500 (黑色幽默)》之銘言:
: 我們都知道 1除3 = 0 餘 1
: 4除3 = 1 餘 1
: 但是 -1除3的餘數到底是多少呢?
1除以3 = 0 餘 1 ('_')
4除以3 = 1 餘 1 (o'_'o)
-1除以3 = ? 餘 ?? (ob'_'ov)
這問題不難,我們先看看除法的規則
Division Algorithm :
Given integers a and b, with b > 0, there exist unique
integers q and r satisfying
a = qb + r ,0 <= r <= b
The integers q and r are called, respectively, the quotient and remainder
in the division of a and b.
('_') 式 可以改寫成 1 = 0*3 + 1
(o'_'o)式 可以改寫成 4 = 1*3 + 1
(ob'_'ov)式 就變成 -1 = ?*3 + ??
在腦袋還沒想到之前我們的膝蓋就立馬知道
阿! ? = 0 , ?? = -1 嘛!So easy!!!
但是仔細看那串看不懂的英文裡,有一句話寫著
0 <= r <= b
OK,你可能還抓不到重點,我再mark強調一下
0 <= r
0 <= r
0 <= r
是的,明文規定,餘數要大於等於零
也就是??要大於等於0
那剛剛膝蓋好不容易想出來的 -1 = 0*3 + (-1) 不就沒用了
非也
我們只要用一個技巧就好了,那就是 "正負抵銷" !
就是+1-1啦
(ob'_'ov)式就變成
-1 = (0 +1 -1 )*3 + (-1)
-1 = (0 -1 )*3 + 3 + (-1)
-1 = (-1)*3 +2
所以餘數答案就是2!
有人可能會問說,為何一定要+1-1,不能+2-2或+3-3逆?
如果+2-2的話,就會導致餘數r > 除數b ,違反規定0 <= r <= b
那為何要這樣規定咧?那牽扯到唯一性的問題
這又是另一個故事了
Q.E.D.