还很粗糙,效率也不太高,有时间再封装到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相乘,并按数位...
总的来说,实现大数相乘涉及到了数组操作、字符与数字的转换、进位处理等多个编程概念,这对于理解和掌握高级算法至关重要。通过熟练掌握这种方法,你可以处理任意大小的大数乘法,而不仅仅是几万以内的数。
根据给定的文件信息,我们可以总结出以下关于“用C语言实现大数相乘”的相关知识点: ### 一、背景介绍 在计算机科学领域,处理非常大的数字常常超出了标准整型数据类型所能容纳的范围。例如,在C语言中,一个`...
实现了两个大数相乘的小程序,数组大小可自行指定,欢迎大家进行验证
在这个项目中,我们将探讨如何使用VC++,特别是VS2010,来实现大数阶乘的计算,这个功能是通过数组实现的。 首先,理解大数阶乘的计算方法是至关重要的。阶乘是指将一个正整数n与小于它的所有正整数相乘的结果,...
标题“大数相乘c语言”和描述“两个超过计算机所能表示的数相乘,利用数组存储大数,进行相乘”所提及的就是这种技术。 大数相乘的基本思路是将每个大数拆分成数组中的每一位,然后按照传统的笔算乘法方法进行计算...
本文将深入探讨大数相乘的基本概念、算法以及其实现方法。 首先,我们要理解什么是大数。在大多数编程语言中,整型和浮点型变量都有其存储和运算的限制,例如32位整型最大只能表示到2^31 - 1,而浮点型也有其精度...
C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。
在计算机科学中,大数相乘是处理超过标准整型数据范围的数字乘法问题。在C语言中,由于标准库并不直接支持大数运算,...通过理解这些概念,你可以根据提供的“大数相乘算法”文件进一步学习和实现自己的大数相乘程序。
本篇文章将详细介绍如何用C/C++实现大数相加和大数相乘。 首先,我们要理解大数的概念。在计算机内部,基本的数据类型如int、long等都有其存储范围限制,对于超出这些范围的整数,就需要用到大数表示。在C/C++中,...
两大数相乘,算法,数组,C语言.。。。。。。
这里介绍一种基于数组表示的大数相乘的方法。 首先,我们用一个整型数组来表示一个大数。数组的每个元素存储大数的一位数字,大数d可以表示为: d = a[k] * 10^(k-1) + a[k-1] * 10^(k-2) + ... + a[2] * 10 + a[1...
通过对大数相乘和多项式相乘的设计思路、数据结构设计、功能函数设计、程序代码等方面的详细介绍,帮助读者深入理解大数相乘和多项式相乘的实现原理和方法。 1. 大数相乘 大数相乘是指两个大整数的相乘运算。由于...
本主题将深入探讨大数相乘的算法原理、源码分析及其实现。 大数相乘的基本思路通常包括以下几种方法: 1. **基础位操作**:这是最直接的方法,类似于小学时学习的竖式乘法。每一对对应的位相乘后累加,但这种做法...
大数相乘,我自己刚完成的,程序已在VC环境下调试通过,程序可以计算任意长度的两个大数的成绩!!!
在实现大数相乘的过程中,作者首先提出了思路,即从大数的末位开始逐位相乘,并将结果存储在一个数组中,同时处理进位的情况。这种算法类似于我们手动计算大数乘法的方式,从个位开始逐位相乘,然后逐次向高位进位。...
大数相乘通常采用Karatsuba算法或更高效的FFT(快速傅里叶变换)算法。对于阶乘,还需要处理大数的乘法、加法和乘方操作。阶乘的计算涉及到高精度计算,因为n! 可能包含许多位。 在汇编实现中,大数阶乘相乘可能...
在本文的代码中,我们使用了字符数组来存储大整数,并实现了大数相乘的算法。该算法将两个大整数相乘,并将结果存储在一个新的字符数组中。算法的思路是将两个大整数倒过来,然后逐位相乘,最后将结果反转输出。 在...
这样,我们就实现了一个简单但功能完整的大数相乘算法,能够处理任意长度的字符串表示的大数相乘问题。 这种基于字符串的大数乘法算法虽然直观易懂,但在效率上可能不如Karatsuba或者更高级的算法如FFT(快速傅里叶...