大数相乘
大数相乘的方法很多,在这里我就介绍一个理解和写起来比较方便的
思想和大数相加差不多!!!
为什么大数相乘相较于大数相加比较难呢?(以 n × m 位的数为例)
- 加法只需要遍历一次, 而乘法则需要遍历 m 次或者 n 次
- 乘法的进位比较麻烦
假设两个大数的字符数组分别为 s1, s2 ,答案数组为 a[]
遍历是比较简单的,主要是进位的问题,我们可以先不考虑进位,将 s1 的第 i 位与 s2 的第 j 位相乘的数放在 a 数组的第 i + j - 1位
即我们在运算的时候是不考虑进位的
void BigNumMul(char * s1, char * s2){
int a[100] = {
0};
int i