用C與Python計算1! + 2! + 3! + ... +100!的值


方法一、調用函數

輸入下面的代碼並保存為factorial.c:

/*計算1! + 2! + 3! + ... +100!的值*/
#include <stdio.h>
#define MAX 100
double factorial(int a); //函數聲明,詳細代碼往下看

int main()
{
    int i;
    double sum = 0;
    for (i = 1; i <= MAX; i++)
        sum += factorial(i);
    printf("1! + 2! + 3! + ... +100! = %e\n", sum);
    return 0;
}

double factorial(int a)
{
    double fact = 1;
    for (int i = 1; i <= a; i++) {
    //這里for循環也可以使用: for (int i = a; i >= 2; i--)
        fact *= i;
    }
    return fact;
}

 

編譯並執行:

gcc factorial.c && ./a.out

結果為:

1! + 2! + 3! + ... +100! = 9.426900e+157

 

Python代碼:

# 1! + 2! + 3! + ... + 100! =

def factorial(n):
    fact = 1
    for i in range(1, n+1):
        fact *= i
    return fact

s = 0
for i in range(1, 101):
    s += factorial(i)
print(f"s={s}")

輸出結果:

s=94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313

如果把

print(f"s={s}")

改為

print("s=%e"%s)

輸出結果為:

s=9.426900e+157

與C的結果一致

 

二、循環嵌套法:

// 使用循環嵌套的方式計算1!+2!+3!+...100!
#include <stdio.h> #define MAX 100 int main() { double sum=0; int i, j; for (i=1; i<=MAX; i++) { //接下來,思考:如何在這個for循環里面把每個階乘都計算出來 double s=1; for (j=1; j<=i; j++) { s = j*s; } sum += s; } printf("sum=%le\n",sum); return 0; }

 

輸出結果:

sum=9.426900e+157

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM