2016-09-01 00:52最佳答案
要知道,long型最大值是2^63-1,即64位的
100!约为9.33262154439441^157,
根本没有办法用基本类型的数据保存,
所以,对于C语言,只能用数组保存,
对于JAVA,可以用BigInteger类生成一个大整数来保存!!
import java.math.BigInteger;
想要完整程序就加点分吧!!!
天下没有免费的午餐!!!!
//更新
double 也不够长!!
要用BigInteger类
汗,才10分............
//40分够了!!
你原来的算法都有一点问题,要多一个控制循环的变量j
//正确求得结果----------------------------------
import java.math.BigInteger;
public class hoss{
public static void main(String args[阀供脆佳诒簧错伪氮镰]){
BigInteger sum = BigInteger.ZERO;
BigInteger m = BigInteger.ONE;
int i=1,j=1;
do{
do{
m=m.multiply(BigInteger.valueOf(j));
j++;
}while(j
sum=sum.add(m);
i++;
}while(i<=100);
System.out.println("1!+2!+...+100! = "+sum.toString());
}
}
//正确求得结果----------------------------------
//BigInteger类的中文API
java.math.BigInteger
所有已实现的接口:
Serializable, Comparable
--------------------------------------------------------------------------------
public class BigIntegerextends Numberimplements Comparable
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
算术运算的语义完全模仿 Java 整数算术运算符的语义,如 The Java Language Specification 中所定义的。例如,以零作为除数的除法抛出 ArithmeticException,而负数除以正数的除法则产生一个负(或零)的余数。Spec 中关于溢出的细节都被忽略了,因为 BigIntegers 所设置的实际大小能适应操作结果的需要。
位移操作的语义扩展了 Java ......余下全文>>