俄罗斯乘法
是一种两数相乘的算法
例如:计算 35*72
35 72
17 144 35 >> 1 72 << 1
8 288 17 >> 1 144 << 1
4 576 8 >> 1 288 << 1
2 1152 ...
1 2304
从上到下,对每一行,若左边的数字若为奇数,则将右边的数字取出,累加。
72+144+2304=2520
累加的结果2520即为乘积。
public static int quickMulti(int a, int b) {
int ans = 0;
for (; b > 0; b >>= 1) {
// 若b为奇数,则累加 a
if ((b & 1) > 0) {
ans += a;
}
a <<= 1;
}
return ans;
}