求超大数的阶乘,比如求800的阶乘!

龙宜坡 2008-12-09 08:49:21
今天去面试遇到这个题

求>500的数的阶乘,提示:阶乘的结果超过了double、decimal、long、的表示范围!

下面是我的解答,但是会出现误差,大家有好的办法给说个,谢谢!

struct SuperNumber
{
//底数
public double Num;
//指数
public int Index;

public static SuperNumber operator *(SuperNumber sn1,SuperNumber sn2)
{
SuperNumber sn=new SuperNumber();
sn.Num=sn1.Num*sn2.Num;
sn.Index=sn1.Index+sn2.Index;

where(sn.Num>10)
{
sn.Num/=10;
sn.Index++;
}

return sn;
}

public override string ToString()
{
return Num.ToString()+" X 10 的"+Index+"次方";
}
}

class Program
{
SuperNumber tmp=new SuperNumber();
SuperNumber sn=new SuperNumber();
sn.Num=1;
sn.Index=0;

for(int i=2;i<=800;i++)
{
tmp.Number=i;
sn=sn*tmp;
}

System.Console.WriteLine(sn.ToString());

System.Console.ReadKey();
}
...全文
194 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
龙宜坡 2008-12-10
受教了,很是感谢
  • 打赏
  • 举报
回复
suilj 2008-12-09
推荐到这里看看

http://www.emath.ac.cn/
  • 打赏
  • 举报
回复
liangbch 2008-12-09
我来报到。关于大数阶乘算法,请看我的系列文章,大数之计算从入门到精通
  • 打赏
  • 举报
回复
tailzhou 2008-12-09
一般都是用数组来保存大数的,可以自己实现大数的运算方法;
也可以使用别人写好了的库;

这个版有个 "liangbch (宝宝) 3101 计算器专家 "
  • 打赏
  • 举报
回复
相关推荐
发帖
数据结构与算法

3.2w+

社区成员

数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
帖子事件
创建了帖子
2008-12-09 08:49
社区公告
暂无公告