求超大数的阶乘,比如求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();
}
...全文
250 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙宜坡 2008-12-10
  • 打赏
  • 举报
回复
受教了,很是感谢
suilj 2008-12-09
  • 打赏
  • 举报
回复
推荐到这里看看

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

这个版有个 "liangbch (宝宝) 3101 计算器专家 "

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧