`

c语言实现正整数的大数乘法

阅读更多
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* multi(char r[],char b[],char a[],int *p){
	int len=strlen(a),len1=strlen(b),rSta=99,i=len1,j=len,temp=0,cb,ca,tSum,sCur,tt,shi,ge;
	memset(r,'0',100);
	for(i=len1-1;i>=0;i--){
		for(j=len-1;j>=0;j--){
			cb=b[i]-48;ca=a[j]-48; 
			tSum=cb*ca;
			temp=0;
			sCur=101-len1+i-len+j;
			tt=(r[sCur]-48)+tSum;
			ge=tt%10;shi=tt/10;
			r[sCur]=ge+48;
			tt=(r[sCur-1]-48)+shi;	
			rSta=sCur;
			while(tt>=10){
				r[sCur-1-temp]=tt-10+48;
				tt=r[sCur-2-temp]-48+1; 
				temp++;
			}
			if(tt<10 && tt>0){
				r[sCur-1-temp]=tt+48;	
				if(sCur-1-temp<rSta){
					rSta=sCur-1-temp;
				}
			}
		}   
	}
	*p=rSta;
	return r;
}
int main(){
	char r[100],*s1="123456789",*s2="23456";int a=0,*p=&a; 
	printf("%s",multi(r,s1,s2,p)+(*p));
	return 0;
}
分享到:
评论

相关推荐

    大数乘法运算,用于实现两个大整数之间的运算,效率非常高!

    这个压缩包中的"大数乘法.CPP"文件显然是一个实现大数乘法的C++程序,它使用了字符数组来存储大整数,并通过高效算法实现了快速的乘法运算。 大数通常用数组表示,每个数组元素存储一个位。在本例中,可能是用字符...

    用C语言编写的计算两个1000位数字相乘的源程序

    总的来说,这个C语言源程序提供了一个高效解决大数相乘问题的方法,特别是对于100到1000位数字的乘法。它展示了高级算法如何在实际编程中应用,以及如何利用C语言的灵活性来处理超出标准数据类型限制的问题。通过...

    C语言课程设计报告-长整数四则运算

    在本篇C语言课程设计报告中,我们关注的是实现长整数的四则运算,即加法、减法、乘法和除法。长整数指的是可以存储任意长度的整数,不受标准整型限制。根据描述,输入和输出遵循中国的长整数表示习惯,即每四位一组...

    大数阶乘计算(纯c语言).rar

    - Karatsuba算法和Toom-Cook算法是常用的高效大数乘法算法,但实现起来相对复杂。 - 更简单的方法是使用"学校方法",即逐位相乘然后累加,虽然效率较低,但易于理解和实现。 4. **加法算法**: - 大数的加法相对...

    RSA加密算法C语言实现.docx

    - **计算n和φ(n)**:将p和q相乘得到n,计算欧拉函数φ(n) = (p-1)*(q-1),φ(n)代表小于n且与n互质的正整数的数量。 - **选择公钥e**:选取一个整数e,满足1 φ(n),且e与φ(n)互素。 - **计算私钥d**:使用扩展...

    大数相乘——C语言

    大数乘法实现 - **乘法函数** (`multiply()`): 实现了两个字符串代表的大数之间的乘法操作。这里的关键在于如何正确地处理每一位的乘积以及进位问题。 ```c char* multiply(char a[], char b[]) { char *p;...

    C语言N阶层程序,满足大数的阶层

    ,定义为所有小于及等于n的正整数的乘积。对于较小的n值(如n ),阶乘的计算相对简单;但当n变得非常大时,传统的计算方法就会遇到问题,因为这些数值会超出常规数据类型的范围。本篇文章将介绍一种使用C语言实现的...

    大数阶乘程序(VS2005实现)

    阶乘是一个数学运算,表示一个正整数n的所有小于等于n的正整数的乘积,表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。当n变得非常大时,这个乘积会超出计算机中标准数据类型(如int或long)的表示范围,因此...

    c语言1000阶乘

    在计算机科学领域,阶乘是一个常见的数学概念,表示一个正整数n的所有小于及等于n的正整数的乘积,通常表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。阶乘在组合数学、概率论和其他领域有着广泛的应用。本篇将...

    RSA使用C语言算法的实现

    3. 欧拉函数:欧拉函数φ(n)表示小于等于n且与n互质的正整数的个数。在RSA中,φ(pq) = (p - 1)(q - 1),用于计算私钥d。 4. 公钥和私钥生成:选择两个大素数p和q,计算n=p*q和φ(n)。然后随机选择一个整数e,满足1...

    密码学 模n的大数幂乘的快速算法

    ### 密码学中的模n大数幂乘的快速算法 ...通过上述步骤和代码示例,我们可以看到该算法不仅能够有效减少乘法操作的数量,而且其实现相对简单。对于学习密码学或开发相关应用的人来说,掌握这项技术是非常有帮助的。

    算10000以内数阶乘的C语言程序.rar_C语言_阶乘

    首先,阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。在计算大数阶乘时,由于结果可能会超出C语言标准数据类型(如int或long long)...

    Diffie_Hellman算法的C#实现

    3. **生成私钥**:每个用户选择一个私有密钥a或b,它是一个随机的正整数,满足1且1。 4. **计算公钥**:Alice计算A=g^a mod p,Bob计算B=g^b mod p。这两个公钥可以公开,因为仅凭它们无法推断出原始的私钥。 5. *...

    RSA算法在C语言中的实现

    - 计算欧拉函数φ(n)=(p-1)*(q-1),它表示小于n且与n互质的正整数的数量。 - 选择一个整数e,1φ(n),并且e与φ(n)互质。e是公钥的一部分,通常选择e=65537,因为它是一个常用且高效的值。 - 使用扩展欧几里得...

    rsa加密解密算法C语言代码

    接着,文件中包含了一些基本的辅助函数,如`print`用于打印大整数,`cmp`用于比较两个大整数的大小,`mov`用于复制大整数,`mul`实现大整数的乘法,`add`执行大整数的加法,以及`sub`进行大整数的减法。这些函数都是...

    计算大数N的阶乘,N可以任意大,只需修改数组的大小即可。

    阶乘是一个数学概念,表示一个正整数N的所有小于等于N的正整数的乘积,表示为N!。例如,5的阶乘是5! = 5 × 4 × 3 × 2 × 1 = 120。然而,当N变得非常大时,常规的整型或浮点型数据类型可能无法存储这么大的结果,...

    算10000以内数阶乘的C语言程序

    在数学中,阶乘是一个正整数n与小于等于它的所有正整数的乘积,表示为n!。例如,5的阶乘(5!)是5 x 4 x 3 x 2 x 1 = 120。 在C语言中实现这个功能,我们需要用到循环结构(如for或while)来遍历从1到n的所有整数,...

    RSA2-3.rar(基于C语言的RSA算法实现,自己实验版本,小白参考,大牛勿喷)

    1. **大数运算**:RSA算法涉及到大整数的乘法、模幂运算和模逆运算,因此C语言实现时通常需要自定义大数库。这些运算在RSA中扮演关键角色,例如公钥和私钥的生成就基于大数的因式分解。 2. **公钥和私钥**:RSA算法...

    RSA的C语言代码

    - 计算`φ(n) = (p-1)(q-1)`,这里`φ(n)`指的是欧拉函数,表示小于等于`n`且与`n`互质的正整数个数。 - 选择一个整数`e`,使得`1 φ(n)`,并且`e`与`φ(n)`互质。 - 计算`d`,即`e`关于模`φ(n)`的乘法逆元,...

    无位数限制求n的阶乘-c语言

    这里需要处理大数乘法,可以使用学校教的列式乘法方法,但要注意处理进位。 3. 对于每一步的乘法结果,如果超过当前数组的位数,需要将超出部分加到前一位,即进位操作。这个过程需要迭代进行,直到没有进位为止。 4...

Global site tag (gtag.js) - Google Analytics