C语言 简单大数乘法

C++语言编写代码实现32位无符号整数与32位无符号整数相乘,结果为64位无符号整数。

效果

注意乘法累加的移位和加法不同

#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;
int a[32] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[32] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int ret[64];
int main(){
    int c = 0;
    int len = 0;

    for (int i = 0; i < 32; i++){
        len = i;
        for (int j = 0; j < 32; j++){
            c = a[i] * b[j] + c + ret[len];
            ret[len++] = (c % 10);
            c = c / 10;
        }
        while (c){
            c += ret[len];
            ret[len++] = (c % 10);
            c /= 10;
        }
    }

    for (int i = 0; i < 32; i++)
        printf("%d", a[i]);
    printf("\n");
    for (int i = 0; i < 32; i++)
        printf("%d", b[i]);
    printf("\n");
    for (int i = 0; i < 64; i++)
        printf("%d", ret[i]);
    printf("\n");

    return 0;
}

猜你喜欢

转载自my.oschina.net/ahaoboy/blog/1813780
今日推荐