C语言要存储和计算特别大的数的时候应该怎么办啊???

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:05:06
例如要计算2^40甚至更大数的运算应该怎样存储啊???

这是我以前写过的大整数相乘的函数

输入是两个字符串a和b,里面分别存着乘数和被乘数(如12345678901234和98456714568855)

两数相乘的结果存储在字符串c中

#include <stdio.h>
#include <string.h>
int c[2004];
int mul(char a[1001],char b[1001])
{
char temp[1001];

int lena=strlen(a);
int lenb=strlen(b);
if(lenb>lena)//a总是大的整数
{
int t=lena;
lena=lenb;
lenb=t;
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
}
memset(c,0,2002*sizeof(int));
int total=lena+lena;
for(int k=lenb-1;k>=0;k--)
{
int starn=total-lenb+k+1;
int temp=0;
for(int m=lena-1;m>=0;m--,starn--)
{
temp=(b[k]-'0')*(a[m]-'0')+temp;
//printf("%d\n",temp);
// printf("c[%d]=%d\n",starn,c[starn]);
int t=c[starn];
c[starn]=(c[starn]+temp)%10;
// printf("c[%d]=%d\n",starn,c[starn]);
temp=(t+temp)/10;
}