用C语言实现大数相乘(笔记、转载【自哪忘记了】)

用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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值