class BigNum 
...{
public static void main(String[] args) 
...{
JieCheng j=new JieCheng();
j.doJieCheng(300);
j.output();
}
}
class JieCheng
...{
private StringBuffer result;//结果
private StringBuffer tem;//加数
public JieCheng()
...{
tem=new StringBuffer();
result=new StringBuffer();
}
public void doJieCheng(int n)
...{
if(n>=1)
...{
tem.append('1');
result.append('1');
}
for(int i=2;i<=n;i++)
...{
for(int j=1;j<=i-1;j++)//*****只要相加i-1次就可以得到了,而不是i次
...{
int t=0;//进位
int r=0;//余数
for(int k=0;k<result.length();k++)
...{
int sum=result.charAt(k)-'0';
if(k<tem.length())
...{
sum=sum+(tem.charAt(k)-'0');
}
sum+=t;
t=sum/10;
r=sum%10;
char temChar='0';
temChar+=r;
result.setCharAt(k,temChar);
//System.out.println("r="+r);
}
if(t!=0)
...{
result.append(t+"");
}
}
tem=new StringBuffer();
for(int k=0;k<result.length();k++)
...{
tem.append(result.charAt(k));
}
}
}
public void output()
...{
for(int i=result.length()-1;i>=0;i--)
...{
System.out.print(result.charAt(i));
}
}
};
本文介绍了一种使用Java实现的大数阶乘计算方法。通过自定义字符串缓冲区进行加法运算,解决了整型变量无法表示大数值的问题。适用于计算超过标准整型或浮点型变量所能表示范围的阶乘。
372

被折叠的 条评论
为什么被折叠?



