Java NBigInteger生成一个循环
我写这个小程序是为了找到n!:Java NBigInteger生成一个循环,java,loops,biginteger,Java,Loops,Biginteger,我写这个小程序是为了找到n!: public class Fattoriale { public static void main (String[] args){ int n; do { n = Input.readInt("Enter an int number ( int >=0)"); while( n < 0); long fatt
public class Fattoriale {
public static void main (String[] args){
int n;
do {
n = Input.readInt("Enter an int number ( int >=0)");
while( n < 0);
long fatt = 1;
for (int i = 2; i <= n; i++){
fatta = fatt * i;
}
System.out.println(n"+!" + " = " + fatt);
公共类Fattoriale{
公共静态void main(字符串[]args){
int n;
做{
n=Input.readInt(“输入一个整数(int>=0)”);
n<0;
长fatt=1;
对于(int i=2;i这应该是这样的,因为i.add(biginger.ONE)
不会更新变量i
for (; i.compareTo(big) <= 0; i=i.add(BigInteger.ONE)) {
tot = tot.multiply(i);
}
biginger
是不可变的,因此除非您使用=
运算符为其设置新值,否则其值不会更改。因此,每次在调用i.add(biginger.ONE)
的循环中,计算机都会计算i+1,然后丢弃结果。相反,请尝试:
for (; i.compareTo(big) < 0; i=i.add(BigInteger.ONE)){
(;i.compareTo(big)<0;i=i.add(biginger.ONE))的{
对i
使用biginger
不是有点过分吗?我可以看到你的总数(tot
)可能很容易变得非常大,但是如果您尝试获取n!
wheren>整数。MAX_VALUE
,我怀疑这将需要很长时间…Wolfram Alpha指出,如果I
对于32位整数来说太大,您的答案将需要超过10 GB的存储空间:非常感谢!我忘记了
BigInteger i = new BigInteger("2");
System.out.println(i.add(BigInteger.ONE)); // print 3
System.out.println(i); // print 2
for (; i.compareTo(big) < 0; i=i.add(BigInteger.ONE)){