For 21. Дано целое число N (> 0). Используя один цикл, найти сумму
\(1 + 1/(1!) + 1/(2!) + 1/(3!) + ... + 1/(N!)\)
(выражение N! — N–факториал — обозначает произведение всех целых чисел от 1 до N: \(N! = 1 \cdot 2 \cdot ... \cdot N\)). Полученное число является приближенным значением константы e = exp(1).

Решение на Python 3

import random
import math
N = random.randrange(1,15)
N = 20
print('N = ', N)

F = 1.0
S = 1.0
for i in range(1,N+1):
F /= i
S += F
print(i," : ", F," : ", S)
print("Result:",S)
print("e = ",math.exp(1))

Решение на C++

#include <bits/stdc++.h>
using namespace std;

int main() {
srand((int)time(0));
int N;
N = rand() % 20 + 1;
cout << "Number N: " << N << endl;

double f = 1, s = 1;
for(int i = 1; i <= N; i++) {
f /= i;
s += f;
cout << i << " : "<< f << " : "<< s << endl;
}
cout << "Result: " << s << endl;
cout << "e = " << exp(1) << endl;

return 0;
}