算法大数论的研究

无穷大的数据相乘,计算机语言中超出了类型的范围,该如何计算?

以下为一个大数乘上一个0~9之间的数据,算法实现如下:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
void Mult(char c[],char t[],int m)//c[]大数,m为不超过10的整数
{
int i,l,k,flag,add=0;
char s[100];
l=strlen(c);
for (i=0;i<l;i++)
s[l-i-1]=c[i]-'0';
for (i=0;i<l;i++)
{
k=s[i]*m+add;
if (k>=10) //需要进位
{
s[i]=k%10;//保留位
add=k/10;//进位值
flag=1;
}
else
{
s[i]=k;
flag=0;
add=0;
}
}
if (flag) //乘数进位,高位值为几
{
l=i+1;
s[i]=add;
}
else l=i;
for(i=0;i<l;i++)
t[l-1-i]=s[i]+'0';//赋值结果
t[l]='\0';
}
int main()
{
char c[50]={'1','2','3','4','5'};
char result[50];
Mult(c,result,5);
puts(result);
while(1);
}

posted @ 2013-03-01 15:12  丁洋  阅读(153)  评论(0编辑  收藏  举报