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

例如要计算2^40甚至更大数的运算应该怎样存储啊???
2025-04-12 06:08:05
推荐回答(3个)
回答(1):

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

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

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

#include
#include
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;
}
c[starn]+=temp;
}
效率不高,希望对你有用

回答(2):

用数组存储各个数字位,其运算过程也是由自己编写

回答(3):

用字符串保存 自己写他们之间的运算关系