#include <stdio.h>

/* Protótipo da função J(n) do problema de Josephus */
int J(int n);  

/* Programa principal, que dado um inteiro n, 
   imprime J(m) para 1 <= m <= n. */  
main()
{
  int m, n;

  printf("Valor de n?\nn = ");
  scanf("%d", &n);
  printf("Os valores de J(m), para 1 <= m <= %d sao...:\n\n", n);

  for (m=1; m<=n; m++) 
    printf("J(%d) = %d\n", m, J(m));

  printf("\n");

  return 0;
}

int J(int n)
{
  if (n==1)
    return 1;
  else if ((n%2)==0) return 2*J(n/2)-1;
  else return 2*J(n/2)+1;
}
    
    
  
  
