Calculando Fatorial em C

shape
shape
shape
shape
shape
shape
shape
shape

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. 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);
      }

  1. 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");
    }

  2. 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;
    }

  3. 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);
    }

  4. #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;
    }

  5. 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;
    }

  6. 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.

  7. #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;
    }

  8. 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;
    }

  9. #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;
    }

  10. 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");
    }

  11. 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.

  12. 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;
    }

  13. 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;

    }

  14. #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;
    }

  15. 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;
    }

  16. 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.

  17. 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);
    }

  18. 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

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