首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

数的阶乘

2013-03-21 
求一个数的阶乘为了防止某个数的阶乘太大超过Long的取范围,采用了BigInteger类型的数据import java.math.B

求一个数的阶乘

为了防止某个数的阶乘太大超过Long的取值范围,采用了BigInteger类型的数据

import java.math.BigInteger;public class factorial {public static void main(String[] args) {int n1 =17;int n2 =18;int n3 =56;System.out.println(n1+"的BigInteger阶乘为"+bigfactorial(n1));System.out.println(n1+"的Long阶乘为"+longfactorial(n1));System.out.println(n2+"的BigInteger阶乘为"+bigfactorial(n2));System.out.println(n2+"的Long阶乘为"+longfactorial(n2));System.out.println(n3+"的BigInteger阶乘为"+bigfactorial(n3));System.out.println(n3+"的Long阶乘为"+longfactorial(n3));}public static BigInteger bigfactorial(int n){BigInteger result = new BigInteger("1");if(n<0){System.err.println("请输入不小于0的整数");return new BigInteger("-1");}else if(n==0){return new BigInteger("0");}else {for(;n>0;n--){result = result.multiply(new BigInteger(n+""));}}return result;}public static Long longfactorial(int n){Long result = Long.parseLong("1");if(n<0){System.err.println("请输入不小于0的整数");return Long.parseLong("-1");}else if(n==0){return Long.parseLong("0");}else{for(;n>0;n--){result = result*(n);}}return result;}}


测试结果:17的BigInteger阶乘为355687428096000
17的Long阶乘为355687428096000
18的BigInteger阶乘为6402373705728000
18的Long阶乘为6402373705728000
56的BigInteger阶乘为710998587804863451854045647463724949736497978881168458687447040000000000000
56的Long阶乘为6908521828386340864

热点排行