我写的代码能算到1000!,可再大点程序就挂了,初学者希望大家帮忙解答!!!
import java.math.BigInteger;
import java.util.*;
class text {
public static void main(String []args)
{
Scanner reader=new Scanner(System.in);
int a=reader.nextInt();
BigInteger i=new BigInteger(a+"");
BigInteger sum=new BigInteger(a+"");
BigInteger l=new BigInteger(1+"");
while(!i.equals(l))
{
i=i.subtract(l);
sum=sum.multiply(i);
}
System.out.println(sum);
}}
import java.math.BigInteger;
import java.util.*;
class text {
public static void main(String []args)
{
Scanner reader=new Scanner(System.in);
int a=reader.nextInt();
BigInteger i=new BigInteger(a+"");
BigInteger sum=new BigInteger(a+"");
BigInteger l=new BigInteger(1+"");
while(!i.equals(l))
{
i=i.subtract(l);
sum=sum.multiply(i);
}
System.out.println(sum);
}}
import java.math.BigInteger;
class test {
public static void main(String []args)
{
BigInteger a=new BigInteger(10000+"");//此处可修改阶乘最大数
BigInteger sum=new BigInteger(a+"");
BigInteger m=new BigInteger(1+"");
while(!a.equals(m))
{
sum=sum.multiply(m);
m=m.add(new BigInteger(1+""));
}
System.out.println(sum);
}
}
位操作对其操作数的二进制补码表示形式的单个位进行操作。如有必要,操作数会通过扩展符号来包含指定的位。单一位操作不能产生与正在被操作的 BigInteger 符号不同的 BigInteger,因为它们仅仅影响单个位,并且此类提供的“无穷大词大小”抽象可保证在每个 BigInteger 前存在无穷多的“虚拟符号位”数。 public static void main(String[] args) {
long sum=1;
int i=10;
do{
sum=sum*i;
i--;
}while(i!=1);
System.out.println(sum);
BigInteger bi=new BigInteger("1");
int max=1349;
do{
bi=bi.multiply(new BigInteger(new Integer(max).toString()));
max--;
}while(max!=1);
System.out.println(bi);
}比你好 1349以后就不输出了
是不是和内存有关呀?
理论上应该是可以的