用C语言实现大数相乘
大致思路:
把两个大数字分别以数组的形式存储在变量中 如下
int arr1[8] = { 1,2,3,4,5,6,7,8 };
int arr2[8] = { 8,7,6,5,4,3,2,1 };
然后像小学算法一样存储到新的数组中
如图下:
关键:
这个时候你会发现在数组中的每个元素都是没有的进位的
所以需要把每个元素超过10的部分进位
源码如下:
#include<stdio.h>
int main()
{
int arr1[8] = { 1,2,3,4,5,6,7,8 };
int arr2[8] = { 8,7,6,5,4,3,2,1 };
int arr_result[16] = { 0 };
for (int i = 7; i >= 0; i--)
{
for (int j = 7; j >= 0; j--)
{
arr_result[i + j + 1] += arr1[i] * arr2[j];
}
}
for (int i = 15; i >= 0; i--)
{
if (arr_result[i] >= 10)
{
arr_result[i - 1] += arr_result[i] / 10;
arr_result[i] %= 10;
}
}
for (int i = 0; i < 16; i++)
{
printf("%d", arr_result[i]);
}
return 0;
}