您的位置:首页 > 编程语言 > Java开发

关于大数(阶乘的位数)三种方法

2015-09-23 15:22 288 查看
方法一;套用公式
log10(1)+log10(2)+···+long10(n)取整后加1 
java代码如下

package ACM;
import java.util.Scanner;

import java.math.*;
public class Main{

 public static void main(String []args){

  Scanner sc = new Scanner(System.in);

  int n=sc.nextInt();

  while(n--!=0){

   int m=sc.nextInt();

   double res=0;

   for(int i=1;i<=m;i++){

    res+=Math.log10(i*1.0);

   }System.out.println((int)res+1);

  }

 }

}

方法二 (不了解 )

斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。http://wenku.baidu.com/link?url=CLhnSk2J4USL1V-LemfXYVCA_yhBztWe61JRprFo7SDk3E6jelNBMUyHrejezDgU4iWsVABrQ34cdMykEH8o5iyH7ywqvB1lMFRFk-98iHC

方法三 Knuth的算法(不清楚)

关于java中log函数的使用 详见代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 大数