/*
   collatz.c
   ---------

   Seja 

     f(x) = x/2 se x 'e par e 3x+1 se x 'e impar.

   Este programa recebe um inteiro x > 0 e determina o menor
   n para o qual f^(n)(x) = 1, onde f^(n) denota f composta
   com ela mesma n vezes (f^(0)(x) = x, f^(1)(x) = f(x),
   f^(2)(x) = f(f(x)), etc).  

   Conjectura-se que tal n existe para todo x.

   O que acontece com este programa se fornecemos um x para o
   qual a conjectura falha?

 */

#include <stdio.h>

int main()
{
  int x, n;

  printf("Forneca x: ");
  scanf("%d", &x);

  n = 0;

  while (x != 1) {
    if (x % 2 == 0)
      x /= 2;
    else
      x = 3 * x + 1;
    n++;
  }

  printf("Chegou em 1 com %d iteracoes.\n", n);
  return 0;
}
