点击这里给我发消息 点击这里给我发消息

C语言高精度乘法的实现方法

添加时间:2013-12-7
    相关阅读: C语言

    对于要求很搞的C语言高精度乘法,相信很多人还没有用到过,应为在常规的应用中一般精度的乘法就可以满足我们的计算要求,今天一起来看看高精度乘法的实现方法吧。

    /*

    高精度乘法输入:两行,每行表示一个非负整数(不超过10000位)

    输出:两数的乘积。

    */

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <memory.h>

#define MAX 10001

int bigchenfa(int *sum,int *a,int *b,int lsum,int la,int lb)
{
    int i,j,k ;
    memset(sum,0,sizeof(sum));
    lsum = 0 ;
    for(i=1 ; i<= la ; i++) /*用数组模拟运算*/
    for(j=1,lsum=i-1; j<= lb ; j++)
    sum[++lsum] += b[j] * a[i] ;

    for(i=1 ; i<= lsum ; i++)/*进位处理*/
    if (sum[i] >= 10)
    {
               if ( sum[lsum] >= 10)
               lsum ++ ;
               sum[i+1] += sum[i] / 10 ;
               sum[i] %= 10 ;
    }

    return lsum ;
}


int main(void)
{
  int a[MAX]={0},b[MAX]={0},sum[MAX*2]={0} ;
  int la=0,lb=0,lsum=0;
  int i,j ;
  char sa[MAX],sb[MAX] ;
  scanf(\"%s %s\",sa,sb);

  la = strlen(sa);
  lb = strlen(sb);

  for(i=1,j=la-1; i<= la ; i++,j--)
  a[i] = sa[j] - ’0’ ;
  for(i=1,j=lb-1; i<= lb ; i++,j--)
  b[i] = sb[j] - ’0’ ;

  lsum = bigchenfa(sum,a,b,lsum,la,lb) ;

  for(i=lsum ; i>= 1 ; i--) [Page]
  printf(\"%d\",sum[i]);

  printf(\" \");

  system(\"pause\");

  return 0 ;
}

相关C语言高精度乘法的实现方法

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册