Java: 求100!

 把每一步的结果分解成单个数字存入数组。没有使用BigInteger。

public static void main(String[] args) {  
		int N=100;  
		int [] rt=new int[1000];  
		rt[0]=1;  
		int len=1,i;  
		int c=0;  
		for(i=2;i<=N;i++){  
			for(int j=0;j<len;j++){  
				int tmp=rt[j]*i+c;  
				rt[j]=tmp%10;  
				c=tmp/10;  
			}
			while(c!=0) {  
				rt[len++]=c%10;  
				c/=10;
			}
		}
		for(int j=len-1;j>=0;j--){  
			System.out.print(rt[j]);  
		}
//		System.out.println();  
	}

 

下面是利用BigInteger的解法:

	public int sum =1 ;
	public BigInteger biSum = new BigInteger("1");
	
	public static void main(String[] args) {
		Factorial100 test = new Factorial100();
		test.calBigInt(100);
		System.out.println(test.sum);
		System.out.println(test.biSum);
	}
	
	public int calInt(int num){
		for(int i=num; i>0; i--){
			sum *= i;
		}
		return sum;
	}
	
	public String calBigInt(int num){
		for(int i=num; i>0; i--){
			biSum = biSum.multiply(BigInteger.valueOf(i));
		}
		return biSum.toString();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值