C++ 程序实现俄罗斯农民乘法
c++server side programmingprogramming
俄罗斯农民算法将两个数字相乘。这是一种计算两个长数字乘法的快速算法。
算法
开始 Russianpeasant(num1, num2) Int result=0 while (num2 > 0) if (num2 and 1) result = result + n; num1= num1 左移 1; num2= num2 左移 1; return result End
示例代码
#include <iostream> using namespace std; unsigned int russianPeasant(unsigned int n, unsigned int m) { int result = 0; while (m > 0) { if (m & 1) result = result + n; n = n << 1; m = m >> 1; } return result; } int main() { cout << russianPeasant(10, 20) << endl; cout << russianPeasant(7, 6) << endl; return 0; }
输出
200 42