java竞赛-大数阶乘问题

        Java计算阶乘(n!)需要使用实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!
        计算机中提供了长整型和双精度等能存储较大数的数据类型,但在有些时候,这样的数据类型不能满足实际应用的需求,比如大数的阶乘。请编写程序,实现大数阶乘的算法。要求能计算N(6<=N<=300)的阶乘。

import java.math.BigDecimal; 
import java.util.Scanner; 
/**
 * @author LucasXu
 * @date   2015 11 26
 * @content Java计算阶乘(n!)需要使用实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!
 * 计算机中提供了长整型和双精度等能存储较大数的数据类型,但在有些时候,这样的数据类型不能满足实际应用的需求,
 * 比如大数的阶乘。请编写程序,实现大数阶乘的算法。要求能计算N(6<=N<=300)的阶乘。
 */
public class dashujiecheng { 
public static BigDecimal factorial(BigDecimal n){ 
BigDecimal bd1 = new BigDecimal(1);//BigDecimal类型的1 
BigDecimal bd2 = new BigDecimal(2);//BigDecimal类型的2 
BigDecimal result = bd1;//结果集,初值取1 
while(n.compareTo(bd1) > 0){//参数大于1,进入循环 
result = result.multiply(n.multiply(n.subtract(bd1)));//实现result*(n*(n-1)) 
n = n.subtract(bd2);//n-2后继续 
} 
return result; 
} 
public static void main(String[] arguments){ 
	System.out.println("请输入阶乘数:");
Scanner sc = new Scanner(System.in); 
BigDecimal n = sc.nextBigDecimal(); 
sc.close();
System.out.print(n + "!=" + factorial(n)); 
} 

}


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许进进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值