失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言实现大数相乘

C语言实现大数相乘

时间:2022-11-10 07:27:47

相关推荐

C语言实现大数相乘

昨天心血来潮,想实现数组大数相乘,不写C已经有段时间了,因为改写python了,最后发现宝刀未老啊!

想法:按照两个数相乘的方法实现。把数拆分放到数组中,进行相乘或者相加。

#include <stdio.h>#include <stdlib.h>#include <string.h>int get_result(int n, int arr_b[], int arr_len, int result[]){int k=0,j=0, num=0;int temp1 = 0, temp2=0;for(j=0; j<=arr_len; j++){num = n * arr_b[j] + temp1;temp1 = num / 10; //jingweitemp2 = num % 10;result[k] = temp2;k++; }if(num >=10){result[k++] = temp1;} return k;}int add_array(int sum[], int pos, int re[], int re_n){int j = 0;int temp =0, temp1=0, temp2=0; for(j=0;j<re_n;j++){temp = sum[pos] + re[j] + temp1;temp1 = temp / 10; //jingweitemp2 = temp % 10;sum[pos] = temp2;pos++;}if(temp>=10)//jingwei{sum[pos++] = temp1; }return pos;}void array_is_duicheng(int a, int b){int sum[100]={0};int i=0, j=0, k=0;int num = 0;int arr_a[50]={0};int arr_b[50]={0};int len_a =0, len_b=0;int re[100] ={0};while(a>=10){arr_a[len_a++] = a % 10;a = a/10;}arr_a[len_a] = a;while(b>=10){arr_b[len_b++] = b % 10;b = b/10;}arr_b[len_b] = b;for(i=0; i<=len_a; i++){ memset(re, 0, sizeof(int)*100);j = get_result(arr_a[i], arr_b, len_b, re); num = add_array(sum, i, re, j); }/* 输出数据 */i=num-1; while(i>=0){printf("%d ", sum[i]);i--;}}int main(){array_is_duicheng(12345678, 87654321);return 0;}

输出结果为:1 0 8 2 1 5 2 0 2 2 3 7 4 6 3 8

如果觉得《C语言实现大数相乘》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。