n的階乘溢位問題處理
阿新 • • 發佈:2020-11-14
public static void factorial(int n) { //傳入階乘的數字n //建立儲存結果的陣列array int[] array=new int[100]; array[0]=1; //位數bit int bit=1; //進位carry int carry=0; for(int i = 2;i <= n; i++) { //從2的階乘開始計算,算到n for(int j = 0; j < bit; j++) { array[j]= array[j] * i; } for(int j = 0; j < bit-1; j++) { //進位數 carry = array[j]/10; //每個陣列元素都只留下個位數 array[j] %= 10; //上一位加上進位的結果 array[j+1] += carry; } //如果最高位大於等於10,那麼需要再進一位if(array[bit-1] >= 10) { int temp = array[bit-1] / 10; array[bit-1] %= 10; //一直進位直到進位數為0 while(temp != 0) { array[bit] = temp % 10; temp /= 10; bit++; } } }for(int m = bit - 1; m >= 0; m--) { System.out.print(array[m]); } }