Thuật toán nông dân Nga để nhân hai số. Đây là một thuật toán nhanh chóng để tính toán phép nhân hai số dài.
Thuật toán
Begin Russianpeasant(num1, num2) Int result=0 while (num2 > 0) if (num2 and 1) result = result + n; num1= num1 left shift 1; num2= num2left shift 1; return result End
Mã mẫu
#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; }
Đầu ra
200 42