Cálculo da Soma de Fatoriais

Problema

Dado um número inteiro positivo N, calcule S = 1! + 2! + 3! + ... + N!.

Formato de Entrada

A entrada consiste em um número inteiro positivo N não superior a 10.

Formato de Saída

Exiba o valor de S em uma única linha.

Exemplo de Entrada

3

Exemplo de Saída

9

Implemetnações em Diferentes Linguagens

1. Versão em C++

#include <iostream>
using namespace std;

int main() {
    int numero;
    int total = 0;
    int fatorial = 1;
    cin >> numero;
    
    for (int contador = 1; contador <= numero; contador++) {
        fatorial = fatorial * contador;
        total = total + fatorial;
    }
    
    cout << total;
    return 0;
}

2. Versão em C#

using System;

class CalculoFatorial {
    static void Main() {
        int limite = Convert.ToInt32(Console.ReadLine());
        int resultado = 0;
        int fatorialAtual = 1;
        
        for (int i = 1; i <= limite; i++) {
            fatorialAtual *= i;
            resultado += fatorialAtual;
        }
        
        Console.WriteLine(resultado);
    }
}

3. Versão em Java

import java.util.Scanner;

public class SomaFatoriais {
    public static void main(String[] args) {
        Scanner leitor = new Scanner(System.in);
        int numero = leitor.nextInt();
        leitor.close();
        
        int soma = 0;
        int fatorial = 1;
        
        for (int i = 1; i <= numero; i++) {
            fatorial = fatorial * i;
            soma = soma + fatorial;
        }
        
        System.out.println(soma);
    }
}

4. Versão em Python

numero = int(input())
soma_total = 0
produto_fatorial = 1

for valor in range(1, numero + 1):
    produto_fatorial = produto_fatorial * valor
    soma_total = soma_total + produto_fatorial

print(soma_total)

Explicação do Algoritmo

O algoritmo calcula a soma dos fatoriais de 1 até N de forma iterativa. Inicializa-se uma variável para armazenar o fatorial atual (iniciando em 1) e outra para acumular a soma total. Em cada iteração do loop, multiplica-se o fatorial atual pelo índice atual para obter o próximo fatorial, e adiciona-se esse valer ao acumulador total.

Para N=3, o cálculo seria:

  • Iteração 1: fatorial = 1 × 1 = 1, soma = 0 + 1 = 1
  • Iteração 2: fatorial = 1 × 2 = 2, soma = 1 + 2 = 3
  • Iteração 3: fatorial = 2 × 3 = 6, soma = 3 + 6 = 9

Esta abordagem evita o recálculo completo de cada fatorial a partir do início, aproveitando o resultado do fatorial anterior para calcualr o próximo de forma eficiente.

Tags: fatorial soma algoritmo C++ C#

Publicado em 9-14 15:06