当前页面: 开发资料首页 → J2SE 专题 → 我要计算10W的阶乘,怎么办?
我要计算10W的阶乘,怎么办?
摘要: 我要计算10W的阶乘,怎么办?
我要计算10W的阶乘,怎么办?
用BigInteger类型
递归或循环
搜索一下下载,几年前有个朋友做过一个计算器。我替你找了
http://down.csdn.net/ycx/C/7960.html
这个哥们真厉害,10w! 结果转成文本是508K,俺的P3 1.13G 2.8s多就算出来了
BigInteger循环慢慢的算
他那程序我没用啊,我要java的,而且那么长
1.2里面有c源码,改java的就是了
BigInteger不过我怀疑这么大的数字会不会出现计算机溢出
BigInteger result = new BigInteger(-#34;1-#34;);
for (int i = 1; i -#60;= 100000; i++) {
result = result.multiply(new BigInteger(String.valueOf(i)));
}
System.out.println(result);
不会溢出的
不过这么算很慢,要3、4分钟
think in java 就有这种例子,找找
我以前用C算过大的。当时用的是数组来模拟超大整数。
一位一位的算出来。可能有点慢。 BigInteger 肯定会益出的
import java.io.*;
import java.math.*;
public class jcc
{
public static void main(String args[])
{
BigDecimal sum = new BigDecimal(1.0);
for(int i = 1; i -#60;= 10000; i++)
{
sum =sum.multiply(new BigDecimal(i));
}
sum=sum.divide(sum);
System.out.println(sum);
}
}
找了一个,效果还不错
可是如果1W
如果1W的阶乘除以1W的阶乘就很慢了啊,和死掉一样了啊
10W的阶乘,没有几分钟算不出来。有人说2。8S算出来,不太现实。
刚才用XP自带的计算器算了一下,双核1.66 算了大约1分钟吧,中间停了两次,结果是2.8242294079603478742934215780245 e+456573
2.8s是实际运行结果,下载地址前面有,其中还有老一点版本的源码,可以试试。我很佩服这个作者
mark
BigInteger就是很慢!