1. 程式人生 > >C++實現高精度乘法

C++實現高精度乘法

由於計算機的儲存位元組有限,所以不能完整表示一個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡,主要說下高精度乘法。高精度乘法,實際上,就是模擬乘法的過程。像小學的筆算過程。

#include <iostream>
using namespace std;
int main()
{
int a[100],b[100],c[100],len,la,lb,i,j;
long long n,m;
cin>>n>>m;
la=0;
while(n>0)
{
la++;
a[la]=n%10;
n=n/10;
}
lb=0;
while(m>0)
{
lb++;
b[lb]=m%10;
m=m/10;
}
memset(c,0,sizeof(c));
for(i=1;i<=la;i++)
for(j=1;j<=lb;j++)
c[i+j-1]=c[i+j-1]+a[i]*b[j];
len=la+lb;
for(i=1;i<=len;i++)
{
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
while(c[len]==0){len--;}
m=c[len];
while(m>0)
{
c[len]=m%10;
m=m/10;
len++;
}
for(i=len-1;i>=1;i--) {cout<<c[i];}
cout<<endl;
return 0;
}