討論串[問題] long long int 的餘數運算
共 4 篇文章
首頁
上一頁
1
下一頁
尾頁

推噓8(8推 0噓 7→)留言15則,0人參與, 最新作者LPH66 (-858993460)時間14年前 (2012/02/15 23:16), 編輯資訊
0
0
0
內容預覽:
這樣一提我才發現果然這樣子還是會出事.... 剛剛試了一下. 傳 a = b = 4611686018427387902 (2^62 - 2). m = 4611686018427387903 (2^62 - 1). 進去. 理論上因為 a = b = m-1 所以 a*b mod m = 1. 但
(還有874個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者tropical72 (藍影)時間14年前 (2012/02/15 22:25), 編輯資訊
0
0
0
內容預覽:
不好意思,我是覺得這段 code 還是很有問題. 另不知道這段 code 是不是就是 LCM, 只是把 constant 設 0 而已 ?. 我說一下我的結論:這段 code 只能是近似算法,而不能算是準確算法。. 下面是我提的論點。. 目前我所知較穩定的作法如 LPH66 所言,. r = ( (
(還有612個字)

推噓2(2推 0噓 3→)留言5則,0人參與, 最新作者DJWS (...)時間14年前 (2012/02/14 23:23), 編輯資訊
0
0
0
內容預覽:
感謝各位板友幫忙. 自己再嘗試回答一次. a*b 與 y*m 其實都會溢位. 但是我們知道正確的r一定小於m,一定放得進64bit. 所以事實上 a*b 與 y*m 有差別的地方就只有低位數的64bit. 而高位數一定是完全相同. 正確的 a*b 與 y*m,高位數相減後就會完全消失. 因此正確的
(還有431個字)

推噓3(3推 0噓 15→)留言18則,0人參與, 最新作者DJWS (...)時間14年前 (2012/02/14 21:37), 編輯資訊
0
0
0
內容預覽:
在網路上看到一段code. // r = a * b % m. long long int mulmod(long long int a, long long int b, long long int m) {. long long int y = (long long int)((double)a
(還有65個字)
首頁
上一頁
1
下一頁
尾頁