今天看到了一个十分有趣的算法,据说是俄罗斯的农夫发明的。特别适合在计算机里面算整数乘法。总结一下和大家分享。
我们来看简单的等式
m * n = (m /2 )* (2 * n) (如果m是偶数)
m * n = ((m -1)/2 )* (2 * n) + n (如果m是奇数)
利用这两个很简单的等式,即使你不会 九九乘法表也可以很简单的算出很大的数想乘的结果。
我们来看看运算步骤如下表
比如我们要计算 86 * 39
m |
本文介绍了俄罗斯农夫算法,这是一种利用简单的等式进行整数乘法的方法,尤其适合计算机处理。通过将偶数乘法转换为除以2再乘以2n的形式,奇数乘法转换为减1再除以2再乘以2n加n的形式,可以高效地计算大数相乘。在计算机中,除2和乘2的位运算速度远快于乘法,使得该算法在处理大整数时具有实际应用价值。
今天看到了一个十分有趣的算法,据说是俄罗斯的农夫发明的。特别适合在计算机里面算整数乘法。总结一下和大家分享。
我们来看简单的等式
m * n = (m /2 )* (2 * n) (如果m是偶数)
m * n = ((m -1)/2 )* (2 * n) + n (如果m是奇数)
利用这两个很简单的等式,即使你不会 九九乘法表也可以很简单的算出很大的数想乘的结果。
我们来看看运算步骤如下表
比如我们要计算 86 * 39
m |
441