怎样用c++程序实现两个最大为300位的大整数的乘法

来源:百度知道 编辑:UC知道 时间:2024/06/25 23:02:26
希望大侠能给出C++源代码

程序参考代码:
#include <iostream.h>

#define MAX_LEN 100

class MEGA_INTEGER{
private:
int x1[MAX_LEN],x2[MAX_LEN],x3[MAX_LEN],x4[MAX_LEN];
int n1,n2,n3,n4;

void hadd(int *xx1,int *xx2,int *xx3,int xn1,int xn2,int &xn3)
{
int i,j,k=0;

if(xn1>xn2){
xn3=xn1;
for(i=0;i<xn1-xn2;i++)xx2[MAX_LEN-xn3+i]=0;
}
else {
xn3=xn2;
for(i=0;i<xn2-xn1;i++)xx1[MAX_LEN-xn3+i]=0;
}

for(i=0;i<xn3;i++){
j=xx1[MAX_LEN-1-i]+xx2[MAX_LEN-1-i]+k;
k=j/10;
xx3[MAX_LEN-1-i]=j%10;
}
if(k&&(MAX_LEN-xn3>=1)){
xx3[MAX_LEN-1-xn3]=k;
xn3++;
}
}

void hsub(int *xx1,int *xx2,int *xx3,int xn1,int xn2,int &xn3)
{
int i,j,k=0;

xn3=xn1;
for(i=0;i<xn1-xn2;i++)xx2[MAX_LEN-xn3+i]=0;

for(i=0;i<xn3;i++){
j=xx1[MAX_LEN-1-i]-xx2[MAX_LEN-1-i]-k;
if(j>=0){