大數運算之JAVA實現

由於編程語言提供的基本數值數據類型表示的數值範圍有限,不能滿足較大規模的高精度數值計算,因此需要利用其他方法實現高精度數值的計算,於是產生了大數運算。大數運算主要有加、減、乘三種方法。
原理
利用數組連續性,將大數每一位上的數字單獨取出放入對應的數組格中,然後再對每一位做單獨的加減乘運算。形象的說,類似於小學學習加減乘所列的式子。
具體代碼如下:

import java.util.Scanner;
public class FACT {
    public static void main(String[] args) {
        int m;
        int data[]=new int[3268];
        Scanner scanner = new Scanner(System.in);
        m= scanner.nextInt();//輸入m的 求m!  
          m=BigFact(m,data);
          System.out.print(data[m--]);
          while(m>0) 
          System.out.printf("%05d",data[m--]);
          System.out.println();
          scanner.close();
    }
    static int BigFact(int m,int data[])  
    {  
        int i, j, k,index =1;//index爲位數  
        int N=100000;
        data[1]=1;//1!=1  
        for (i=1; i<=m; i++)  
        {  
            for (j=1; j<=index; j++)//模擬乘法  
                data[j]*= i;  
            for (k=1;k<index; k++)//進位  
                if (data[k]>=N)  
                {  
                    data[k+1]+=data[k]/N;  
                    data[k]%=N;  
                }  
                while (data[index] >=N)//最高位進位  
                {  
                    data[index+1] = data[index]/N;  
                    data[index++]%=N;  
                }  
        }  
        return index;
    }  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章