Re: [問題] 快速-九九乘法表

看板Programming作者時間17年前 (2008/05/27 06:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/10 (看更多)
所以意思是弄個小func int TIMES(i,j) if i>j return TIMES(j,i) return i^2+(j-i)*i 這樣會比較快? asked by 初學者 ※ 引述《jeunder.bbs@ptt.cc》之銘言: > 最簡單的方法, 沒有人想到嗎? > 首先, i*j = j*i, 所以幾乎有一半不用算. > 其次, i*(j+1) = i*j + i, 所以只要拿前一項 i*j 加上 i, 就得到 i*(j+1). > 同理, (i+1)*j = i*j + j. > 所以周圍的項目都可以用加法算出來, 而且只用 "一次" 加法. > 依此類推擴展. > ※ 引述《TKyo (暗黑貴公子)》之銘言: > : 1.以 2^x 為底, 對被乘數做因式拆解 > : ps.不知道這 "解釋名詞" 是否有誤?? @@ > : ex. 100 = 2^6 + 2^5 + 2^2 = 64 + 32 + 4 > : 17 = 2^4 + 2^0 = 16 + 1 > : 2.使用被乘數 "位移和加法" 的方法來加快速度, 減少乘法消耗的大量 clock > : ex. 假設乘數為 n > : n * 100 = n * (64 + 32 + 4) = n << 6 + n << 5 + n << 2 > : n * 17 = n * (16 + 1) = n << 4 + n -- ︵︵ █▔◣ █▔█ █▔▔ █▔█ █▆▉ █ █▔█ █◣█ █▔ █◣︵︵ █ █ █▁◤ █▁▁ █▁█ ▉▉▉ █ █▁█ █◥█ █ █ 夢之大地 逼逼ㄟ四 █▁◤ █ █ █▁▁ █ █ ▉▉▉ █▁ █ █ █ █ █▁◤ ※ Origin: <bbs.ccns.ncku.edu.tw> ◆ From: 140.116.243.66
文章代碼(AID): #18EpCU00 (Programming)
文章代碼(AID): #18EpCU00 (Programming)