高精度乘法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度乘法相关的知识,希望对你有一定的参考价值。

计算大数间的乘法,原理来源我们的乘法笔算

          1   2   3
  *       5   6   7
  *--------------------------
          7   14  21
      6   12  18
 5   10   15   
*--------------------------
 5   16   34  32  21

高精度乘法一共分为4步:

1.运算前的准备:

(1)输入两个字符串

1 char num1[100] = {0}, num2[100] = {0};
2 int a[100] = {0}, b[100] = {0};
3 scanf("%s%s", num1, num2);
4 int n = strlen(nmu1);
5 int m = strlen(num2);

(2)将其转化为数字形式。注意:因为乘法从末尾开始,所以数字要倒叙存储。

1 int i, j;
2 for(i = 0, j = n-1; i < n; i++, j--) 
3   a[i] = nmu1[j]-0;
4 for(i = 0; j = m-1; i < m; i++, j--)
5   b[i] = num2[j]-0;

2.一位一位的运算。

1 int c[3000] = {0};
2 for(i = 0; i < n; i++) {
3   for(j = 0; j < m; j++)
4     c[i+j] = a[i] * b[j];
5}

3.处理进位。

1 for(i = 0; i < n+m; i++) {
2   if(c[i] > 10) {
3     c[i+1] += c[i] / 10;
4     c[i] %= 10;   
5   }
6 }

4.输出结果。

1 for(i = n+m-1; i >= 0; i--) {
2   if(c[i]) {
3     j = i;
4     break;
5   }
6 }
7 for(i = j; i < n+m; i++)
8   printf("%d", c[i]);

 

 

以上是关于高精度乘法的主要内容,如果未能解决你的问题,请参考以下文章

求助 c语言实现高精度乘法

高精度 加法 减法 乘法 除法 整合

n阶高精度乘法,(求高阶阶乘)

算法AcWing 793. 高精度乘法

洛谷 P1303 A*B Problem(高精度乘法) 题解

高精度乘法和除法