c++大整数乘法
作者:野牛程序员:2023-06-19 16:22:46C++程序设计阅读 2589
在C++中进行大整数乘法可以使用字符串或数组来表示大整数,并实现相应的乘法算法。以下是一个使用字符串表示大整数进行乘法的示例代码:
#include <iostream> #include <string> #include <algorithm> std::string multiply(const std::string& num1, const std::string& num2) { int n = num1.size(); int m = num2.size(); std::string result(n + m, '0'); for (int i = n - 1; i >= 0; i--) { for (int j = m - 1; j >= 0; j--) { int mul = (num1[i] - '0') * (num2[j] - '0'); int sum = result[i + j + 1] - '0' + mul; result[i + j + 1] = sum % 10 + '0'; result[i + j] += sum / 10; } } // 移除前导零 result.erase(0, std::min(result.find_first_not_of('0'), result.size() - 1)); return result; } int main() { std::string num1 = "123456789"; std::string num2 = "987654321"; std::string result = multiply(num1, num2); std::cout << "Result: " << result << std::endl; return 0; }
这个示例代码中,我们定义了一个 multiply
函数,它接受两个参数 num1
和 num2
,分别表示两个大整数。算法采用传统的手工乘法方法,从右向左逐位相乘,并将结果累加到正确的位置上。最后,我们需要移除乘法结果中的前导零。
在主函数中,我们定义了两个大整数 num1
和 num2
,并调用 multiply
函数进行乘法运算。最后,我们打印出结果。
请注意,这个示例代码对于非常大的整数可能会导致溢出或性能问题。对于更高效的大整数乘法算法,可以使用Karatsuba算法或者快速傅里叶变换(FFT)等方法。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892