6-8 簡單階乘計算
阿新 • • 發佈:2020-07-24
#include <stdio.h> int num[6000]; void Print_Factorial ( const int N ) { if(N < 0 || N > 1000) printf("Invalid input"); else { int k = 1; // 位數 int t = 0; // 進位位 num[0] = 1; // 0!= 1 int tmp = 0; // 最基本的乘法運算思想,將臨時結果的每位與階乘元素相乘 for(int i = 2; i <= N; i ++ ) // 開始階乘,階乘元素從 2 開始 { for (int j = 0; j < k; j ++ ) { tmp = num[j] * i + t; // 相應階乘中的一項與當前所得臨時結果的某位相乘(加上進位) num[j] = tmp % 10; // 更新臨時結果的該位上的資訊 t = tmp / 10; // 看是否有進位 } while(t) // 如果有進位 { num[k ++ ] = t % 10; // 新加一位,新增資訊。位數+1 t /= 10; // 看還能不能進位 } } for (int i = k - 1; i >= 0; i -- ) printf("%d", num[i]); } } int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; }