`
javayestome
  • 浏览: 1008921 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数组实现大数相乘

阅读更多
还很粗糙,效率也不太高,有时间再封装到c++类。



//数组自乘测试
void multiply(int a[],int len,int n,int dd)
{
int LEN=len;
int N=n;
//初始化result
int yy=LEN-1,xx=MAX-1;
while(yy>=0)
{
aa[xx--]=a[yy--];
}
for(int i=1;i<N;i++)
{
for(int i=0;i<MAX;i++)
result[i]=0;
int oo=0;

for(int k=LEN-1;k>=0;k--)
{
//clear temp
for(int ss=0;ss<MAX;ss++)
temp[ss]=0;
int carry=0;
int bit=0;
for(int j=MAX-1;j>=0;j--)
{
while(aa[j]*a[k]+carry>=10)
{
int temptemp=aa[j]*a[k]+carry;
temp[MAX-1-bit-oo]=(aa[j]*a[k]+carry)%10;
bit++;
j--;
carry=temptemp/10;
}
temp[MAX-1-bit-oo]=aa[j]*a[k]+carry;
carry=0;
bit++;
}
for(int dd=MAX-1;dd>=0;dd--)
{
int resultcarry=0;
while(temp[dd]+result[dd]+resultcarry>=10)
{
result[dd]=(temp[dd]+result[dd]+resultcarry)%10;
resultcarry=1;
dd--;
}
result[dd]=temp[dd]+result[dd]+resultcarry;
resultcarry=0;
}
oo++;
}
int xx=MAX-1;
while(xx>=0)
{
aa[xx]=result[xx];
xx--;
}
}
print(dd);
}


分享到:
评论

相关推荐

    动态数组实现大数乘法

    两个大数相乘:利用数组实现,数组a存放大数1的每一位,数组b依次存放大数2的每一位。如:一大数1为3463546,则数组 a[]={3,4,6,3,5,4,6},大数2为:89019 则数组b[]={8,9,0,1,9},现在要大数1和大数2相乘,并按数位...

    简单大数相乘,用数组存数

    实现简单的正数相乘,代码简单,大数只能用字符型来存储,因为int最大也就几万,所以要实现字符到整数之间的转换的。还有要进行反向存储数字,反向输出。具体问题在代码中有实现与说明

    大数相乘算法c语言

    用数组进行大数相乘,解决超整形的大数相乘

    大数相乘的C语言实现程序

    实现了两个大数相乘的小程序,数组大小可自行指定,欢迎大家进行验证

    C/C++实现两个大数相乘源代码

    C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。

    大数相乘c语言

    两个超过计算机所能表示的数相乘,利用数组存储大数,进行相乘

    用C语言实现两大数相乘

    两大数相乘,算法,数组,C语言.。。。。。。

    大数相乘算法解析,实现20位的大数相乘

    20位左右的大数相乘算法解析,用一个整型数组表示一个大数,数组的每个元素储存大数的一位数字,则实际的大数d表示为: d=a[k]*10的k-1次幂+a[k-1]*10的k-2次幂+......+a[2]*10+a[1] 其中a[0]保存该大数的位数. ...

    大数相乘 C/C++ 数据结构

    大数相乘,我自己刚完成的,程序已在VC环境下调试通过,程序可以计算任意长度的两个大数的成绩!!!

    随机大数相乘C++实现代码

    电脑随机产生大数,实现大数相乘,密码学中用的~~~~~~

    用C语言实现的大数相乘

    使用C语言字符串、数组存放实现两个大数相乘

    大数相乘,x^y的实现

    这是自己写的大数相乘与x的y次方大数实现,采用char类型的数组实现。大数相乘的算法还行,但是x^y当y比较大时(比如超过1000)运算速度非常的慢。自己能力有限,但是愿意跟大家分享一下。

    用C实现两个大数的相乘(位数可以上万)

    本程序用链表、数组实现了两个大数相乘。(位数可以上万)

    C语言的大数相乘

    用C语言学的大数相乘的实例,可以计算任意长度的数字的乘法(自己设置数组长度),数据结构

    C++实现大数相乘算法

    本文实例为大家分享了C++实现大数相乘的具体代码,供大家参考,具体内容如下 首先说一下乘法计算的算法:同样是模拟人工计算时的方法。 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,...

    c语言大数乘法计算

    大数乘法比较简单的数组实现,实现两个大数相乘的结果。给予初学者提供思路

    C++自定义API函数实现大数相乘算法

    普通的乘法计算用int、long、double都可以解决,但有时候需要处理的数字过大,从而产生溢出,以下是实现任意长度的正整数A*B的算法,即大数相乘,这个算法比较简单易懂,思路如下: 1、在主函数用char型数组a和b分别...

    基于快速傅里叶变换实现的大数运算

    //输入要相乘的一对长整数 void fft(Complex* dst, Complex* src, int p);//快速傅里叶变换 //求复数数组src[0, 2^p)的傅里叶变换,结果存放在dst[0, 2^p)中 void ifft(Complex* dst, Complex* src, int p);//快速...

    大数存储及乘法运算

    大数相乘,数值范围超出double,采用数组存储数字

    JavaScript大数相加相乘的实现方法实例

    本文讲一下如何利用字符串在 JavaScript 中实现大数相加相乘。 相加 用字符串实现相加相乘基本思路就是按照我们在纸上进行竖式运算一样。对于加法,我们需要将两个数 num1 和 num2 上下对齐,然后从个位开始计算两个...

Global site tag (gtag.js) - Google Analytics