Calculando Fatorial em C

Simples programa em C que calcula o fatorial de um número qualquer:


#include 

int main()
{
int fat, n;
printf("Insira um valor para o qual deseja calcular seu fatorial: ");
scanf("%d", &n);

for(fat = 1; n > 1; n = n - 1)
fat = fat * n;

printf("\nFatorial calculado: %d", fat);
return 0;
}

Como funciona?

A variável “n” armazena o número no qual se quer calcular o fatorial, o loop é executado, a variável “n” é multiplicada por “fat”, então temos “fat = n” e a cada iteração 1 unidade é subtraída do número escolhido até que ele seja igual à 1, ou seja, a variável “fat” é multiplicada a cada iteração pelo antecessor do número escolhido.

33 Comments

  1. jose valdene

    gostaria de receber esta atividade para testar com meus alunos.

    • Bruno Pessoa

      Um pouco mais complicado, pois é necessário mostrar as operações na tela juntamente com o resultado, exige um pouco mais do conhecimento e do raciocínio lógico. Se quiser usar segue logo abaixo o código.

      #include
      int i,n,fat=1;
      int main()
      {
      printf(“Digite o numero a ser fatorado:”);
      scanf(“%d”,&n);
      for(i=n;i>1;)
      {
      fat=fat*i;
      printf(“%dX”,i);
      i–;
      }
      printf(“1=%d”,fat);
      getch();
      return(1);
      }

      • walllison

        seu codigo ta faltando coisa

  2. Minha solução

    #include
    #include

    int main(){
    int num, i=1;
    // Fatoração retorna numeros grandes que não cabem em 2 bites
    float fator;

    printf(“Digite o numero que deseja calcular o fatorial”);
    scanf(“%d”, &num);
    fator=1;

    do{
    fator=fator * i;
    i++;
    } while (i<=num);

    printf("O resultado eh %f", fator);
    return'0';
    system("pause");
    }

  3. Matheus

    Muito bom! Parabéns!
    Aqui está o meu!
    Deve tá um pouco grande, pois, estou começando aprender função agora!

    #include
    #include
    int x(int y);
    int main()
    {
    int fat, n;
    n = x(0);
    for(fat = 1; n > 1; n = n – 1){
    fat = fat * n;
    printf(” x %d”, n-1);
    }
    printf(“\n\nFatorial calculado: %d\n\n”, fat);
    system(“pause”);
    return 0;
    }
    int x(int y){
    printf(“Insira um valor para o qual deseja calcular seu fatorial: “);
    scanf(“%d”, &y);
    printf(“\n%d”, y);
    return y;
    }

  4. Francisco

    Esse algorítimo é recursivo?

  5. Denys

    Para entender recursividade, antes precisa entender recursividade!

  6. Rogerio

    main()
    {
    float a,x,y;
    int i;
    i=0;
    printf(“digite o numero que deseja calucular”);
    scanf(“%f”,&a);
    while(i<a){
    x=a-1;
    y=a*x;
    i++;
    }
    printf("%f",y);
    }

  7. Carlin

    #include
    #include

    int main(){
    unsigned long fat;
    int n;
    printf(“Insira um valor para o qual deseja calcular seu fatorial:\n”);
    scanf(“%i”,&n);
    fflush(stdin);

    for(fat = 1; n > 1; n = n – 1){
    fat = fat * n;
    }
    printf(“Fatorial calculado: %lu\n”, fat);
    system(“pause”);
    return 0;
    }

  8. Raul Morais

    int main(void) {
    int num1,result;
    printf(“Digite o numero que deseja saber o fatorial: “);
    scanf(“%d”,&num1);
    result = 1;
    for ( int i = 1; i <= num1;i++){
    result = result * i;
    }
    printf("\n%d\n",result);
    system("pause");
    return 0;
    }

    • João péle

      Porra, estao sem spidi

  9. HOSANA BS

    Olá, Boa noite!
    Gostaria de te parabenizar pelo site. Ele me esclareceu algumas coisas sobre algorítimos, porém eu encontrei dificuldades em relação a esse Programa em Linguagem C que calcula o fatorial de um número.
    Ao copiar e colar os algorítimos o programa não funcionou corretamente. Gostaria de saber se poderiam me mostrar o erro ou me auxilar na montagem de um programa semelhante.
    Desde já agradeço a atenção.

  10. #include
    #include

    int fatorial(int n){
    if (n == 0)
    return 0;
    else
    return n + fatorial(n-1);
    }
    int int main(){
    printf(“%d\n”,soma(15)); // Entrada do número a ser fatorado
    system(“pause”);
    return 0;
    }

  11. Joao Gabriel

    Pessoal como que eu posso fazer a fatorial de uma matriz de duas dimensões???

  12. #include
    int main()
    {
    int n, t, i;
    t=1;
    scanf(“%d”, &n);
    for (i=0; i<=n; i++)
    t=t*1
    printf("%d\n",t);
    return 0;
    }

  13. Stefano Descrow

    Quebrei a cabeça fazendo este em casa, o algoritmo aceita apenas numeros positivos, e depois do numero 1 realiza um FOR para calcular o Fatorial. Espero que este post possa estar ajudando vocês também.
    /* usando 5 como exemplo, se soma = 0, soma vai ser 5* (5-1), depois faz 5*(5-x), o ‘x’ vai aumentando exponencialmente no loop ‘for’ */

    // Algoritmo exibe fatorial de um numero.
    #include
    #include
    int main ()
    {
    int num, x = 1, soma = 0;
    do
    {
    printf(“Digite um numero inteiro: “);
    scanf(” %d”, &num);
    } while (num <= 0);
    if (num == 1)
    {
    soma = 1;
    }
    else
    {
    for ( x = 1; x < num; x++)
    {
    if (soma != 0)
    {
    soma = soma * (num – x);
    }
    else
    {
    soma = (num – x) * num; // se der erro muda este 'x' por '1'
    }
    // PARA FAZER TESTE DE MESA APAGUE AS ' // ' ABAIXO
    //printf("Etapa = %d \t Conta * %d = %d\n", x, (num – x), soma);
    }
    }
    printf("\n\tO fatorial de %d e %d.\n\n", num, soma);
    system("pause");
    return 0;
    }

  14. Emanuel

    #include

    int main(int argc, char const *argv[])
    {
    int i, numero, fatorial;

    printf(“Introduza o numero para calcular o factorial do mesmo:\n”);
    scanf(“%d”,&numero);

    fatorial = 1;

    for (i=1; i <= numero; ++i)
    {
    fatorial = fatorial * i;

    }
    printf("fatorial(%d)=%d\n",numero,fatorial);

    return 0;
    }

  15. Amanda

    main()
    {
    int opcao, i;
    float num, aux, fat;

    do
    {
    printf(“\t\t\t FATORIAL\n”);
    printf(“\t\t\t [1] – Entre com o numero a ser fatorado:\n”);
    printf(“\t\t\t [2] – Sair\n”);
    printf(“\t\t\t Opcao [ ] \b\b\b”);

    do
    {
    opcao = getche();
    if(opcao’2′){
    printf(“\n\n\t\t Opcao Invalida. Entre novamente com a sua Opcao \n”);
    printf(“\t\t\t Opcao [ ]\b\b\b”);

    }}while(opcao ‘2’);
    if (opcao == ‘1’){
    scanf(“%f”, &num);
    if(num<0){
    printf("Valor Invalido. Insira um numero inteiro positivo");}
    else{
    while(i<num){
    fat = num -1;
    aux = num * fat;
    i++;
    }}}

    printf("\n\n\t\t O reusltado eh = %f \n\n\n", aux);}
    while(opcao != '2');

    system("pause");
    }

  16. vitoria

    gostaria de saber como eu posso fazer uma função que receba um número inteiro como parâmetro e devolva o seu fatorial em precisão dupla. Faça um programa para testar a função.

  17. Sinto que fiz do jeito mais burro possível, mas segue o resultado mesmo assim.

    #include
    #include

    int main(){
    int num, fatorial, contador, baseNum;

    printf(“Insira um numero: “);
    scanf(“%d”, &num);

    contador = num – 1;
    baseNum = num;

    fatorial = num * contador;

    for (contador = contador – 1 ; contador >= 1; contador–)
    {
    fatorial = fatorial * contador;

    }
    printf(“O resultado do fatorial de %d eh %d.”, baseNum, fatorial);

    return 0;
    }

  18. Rayc

    int main(){

    int fat, n;
    printf(“Insira um valor para o qual deseja calcular seu fatorial: “);
    scanf(“%d”, &n);

    for (fat = 1; n > 1; fat *= n–);

    printf(“\nFatorial calculado: %d”, fat);
    return 0;

    }

  19. Leonardo

    #include

    void fatorial(){
    int i,n,fat = 1;

    scanf(” %d”,&n);

    for(n ;n>0;n–){
    fat = fat*n;
    }
    printf(“%d\n”, fat);
    }

    int main()
    {
    fatorial();
    return 0;
    }

  20. Felipe

    int main()
    {
    int num=6, fat;

    printf(“\t\t****Calculo do fatorial de 6****\n\n”);

    while(num>1)
    {
    fat *= num;
    num–;
    }
    printf(“\nO fatorial de 6 e >> %i <<\n\n", fat);
    return 0;
    }

  21. Heitor

    Usando essa solução, o fatorial de 13 em diante não é exibido corretamente. Acredito que tal problema ocorra pelo fato de variáveis do tipo INT estarem sendo usadas, ao invés de um long ou algo assim. O problema real é que ao testar esse programa, não obtive sucesso mesmo alterando o tipo de variável.

    • edu

      como tu corrigiu o problema?

  22. Félix

    Eu tenho uma certa preferência por “while”. Acabei utilizando quatro variáveis, e ficou assim:

    #include
    int main(){
    int n, aux, p, fat;
    scanf(“%d”, &n);
    aux=n*(n-1);
    fat=aux;
    while(n>=3){
    n=n-1;
    p=n-1;
    fat=aux*p;
    aux=fat;
    }
    printf(“%d”, fat);
    }

  23. Marcelo

    Fia diferente. Segue abaixo minha solicitação

    int main() {
    int n, y, i;

    printf(“Digite um número inteiro positivo N: “);
    scanf(“%d”, &n);

    printf(“Digite outro número inteiro positivo Y: “);
    scanf(“%d”, &y);

    printf(“Os múltiplos de %d inferiores a %d são: “, y, n);

    for(i = y; i < n; i += y) {
    printf("%d ", i);
    }

    return 0;
    }

Deixe um comentário para Luzimar Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *