java 1!+2!+...+100!

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:35:42
题目好象是要求把1!+2!+3!+....100!的和用do...while语句写。
不知道那里不对输出的数才几千总觉得哪里不对,- -!
我写的如下。
——————————————————————————
public class hoss{
public static void main(String args[]){
long sum=0,i=1;
do{
long m=1;
do{
m=m*i;
m++;
}while(m<i);
sum=sum+m;
i++;
}while(i<100);
System.out.println(sum+"");
}
}
——————————————————————
最好用简单易懂的语言解释下哪里不对,小弟才学2个星期,专业术语不杂听的懂- -!
是否可以把long 改成double?但是改成double 还是不知道哪里错了 感觉好象是中间的do..while错了一样 但是就不知道错在哪里~ 发现错误了 应该是第2个do{m=m*k;.....}while(m<=i)着句错了 但是想了半天想不出来该怎么改。。 //够了吧 40分了~ BigInteger类的我不太懂 解释一下BigInteger 是个什么
//问题解决了,非常感谢!
但是还有几个地方不太明白
BigInteger sum = BigInteger.ZERO 中的BigInteger.ZERO ;BigInteger m = BigInteger.ONE 中的BigInteger.ONE ;m=m.multiply(BigInteger.valueOf(j)) 中的m.multiply(BigInteger.valueOf(j) ;sum=sum.add(m)中的sum.add(m);以及最后输出中的sum.toString() 他们各自表示什么意思~ 简单点说明以下

要知道,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<i);
sum=sum.add(m);
i++;
}while(i<=100);
System.out.println("1!+2!+...+100! = "+sum.toString());
}
}
//正确求得结果----------------------------------<