大数计算
请教如何设计一个大型整数类,用来计算2的3000次方.
给个性能可以接受的算法.谢谢.
[解决办法]
在网上搜“大数计算”,应该有比较多的算法
[解决办法]
我有个思路,是我以前想得,不过自己还没有做过测试
用一个CString变量来记录结果 然后逐位取出*2 进位用一个BOOL变量记录 循环3000次
CString sum=1,num;//num用做中间变量
BOOL record; //记录是否进位
int len,nummber,m;
for(int i=1;i <=3000;i++)
{
len=sum.GetLength(); // 得到当前结果数的长度,即位数,用做循环次数使用
for(int j=0;j <len;j++)
{
if(record=TRUE){m=atoi(sum.GetAt(j))+1;} //判断上次是否进位
else{m=atoi(sum.GetAt(j));}
nummber=m*2; //计算
record=FALSE; //还原记录数
if(nummber> 9){nummber=nummber%10;record=TRUE;} //判断是否进位
num.Format( "%d%s ",nummber,num); //记录临时结果
}
sum=num; //把临时结果赋给中间结果,进入下次运算
}
大概就是这个意思了,不知道有什么地方写错没有。有什么地方不懂的你可以提出来
不知道这行不行得通,还请高手指正
[解决办法]
不知用二进制进行移位运算可以不