程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言實現大數整數乘法

C語言實現大數整數乘法

編輯:關於C語言

/*大數整數乘法方法*/ #include<stdio.h> #include<stdlib.h> #include<string.h> char * bigmuilty(char*muiltied,int len1,char *muilty,int len2)//muiltied 為被乘數,len1為其長。muilty為乘數,len2為其長 {    int len;    int i=0;    int j=0;    int k=0;    int tmp_result=0;    int carry=0;    char* result;    len=len1+len2; //兩個數相乘他們的最大長度為乘數與被乘數的長度和    result=(char*)calloc(len,1);//動態分配內存    for(i=0;i<len2;i++)//用乘數的每一位去乘以被乘數    {      for(j=0;j<len1;j++)      {         tmp_result=muilty[len2-i-1]*muiltied[len1-j-1];//得到零時結果         result[j+i]+=tmp_result;//如果以0為起始標號,被乘數和乘數下標分別從右往左依次增加,則結果存放的位置為j+i      }      for(k=0;k<=j+i-1;k++)//整理結果,使每位的值在0-9之間      {                          if(result[k]>9)         {            carry=result[k]/10;            result[k]=result[k]%10;            result[k+1]+=carry;         }      }    } return result; } int main() {    int len1=0;    int len2=0;    int len;    int i=0;    int num='0';    char *result;    char muiltied[BUFSIZ];//被乘數存放位置    char muilty[BUFSIZ];    printf("entry muiltied :  ");    scanf("%s",muiltied);    printf("\nentry muilty :  ");    scanf("%s",muilty);    len1=strlen(muiltied);    len2=strlen(muilty);    len=len1+len2;    for(i=0;i<len1;i++)    {        muiltied[i]=muiltied[i]-num;    }    for(i=0;i<len2;i++)    {       muilty[i]=muilty[i]-num;    }    result=bigmuilty(muiltied,len1,muilty,len2);    i=len-2;    printf("\nresult : ");    if(result[len-1]>0)    {      printf("%c",result[len-1]+num);    }    while(i>=0)    {       printf("%c",result[i]+num);    i--;    }    printf("\n");    free(result);    return 0; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved