Java 大數階乘簡單方法
阿新 • • 發佈:2019-01-10
import java.util.Scanner; public class nc030 { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in); int n = cin.nextInt(); long start = System.currentTimeMillis(); int[] date = new int[100000];// 用陣列存放結果 date[1] = 1; int weishu = 1; // 求出來的值的位數 for (int i = 1; i <= n; i++) { for (int j = 1; j <= weishu; j++) { date[j] = date[j] * i; } // 確保除最高位外的每位不大於9 for (int j = 1; j < weishu; j++) { if (date[j] >= 10) { date[j + 1] += date[j] / 10; date[j] = date[j] % 10; } } // 確保最高位不大於9 while (date[weishu] >= 10) { weishu++; date[weishu] += date[weishu - 1] / 10; date[weishu - 1] = date[weishu - 1] % 10; } } System.out.println(n+"的階乘耗時:"+(System.currentTimeMillis()-start)+"毫秒"); // 輸出陣列結果 for (int k = weishu; k >= 1; k--) { System.out.print(date[k]); } } }