作者TKyo (暗黑贵公子)
看板Programming
标题Re: [问题] 快速-九九乘法表
时间Mon May 19 15:32:44 2008
※ 引述《kbslave (ITer)》之铭言:
: 最近朋友问我一个问题『要如何写一个快速的 N N乘法表』,
: 也就是要计算出一个Array[n][n],其中array[i][j]等於ixj,
: 且全部纪录此array中,当然最简单的做法就是用双for-loop去跑,
: for
: for
: array[i][j]=i*j;
: 我也想到另一个方法http://blog.kbslave.com/2008/05/1.html,
: 但感觉效果其实没有很好,不知道有没有人有更快的解法呢?
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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.86.136.1