/* Para cada numero n en un rango 1... N, el programa determina el numero 
	de  pasos en que termina el proceso "3x+1" que empieza con n; 
	este proceso se define de la manera siguiente: se transforma cualquer entero 
	positivo x al numero  x/2 si x es par, y a 3x+1 si x es impar. El proceso termina 
	cuando llegamos a x=1. 
	
	Es un problema abierto todavia si el proceso siempre termina (la conjetura es que 
	si, basado en experimentos con n muy grande, pero nadie lo ha demostrado; busca 
	en Wikipedia "Collatz conjecture"). 
*/


#include <stdio.h>

int cuantos_pasos(int ); 

int next(int ); 

main(  ) {
	
	int n, N ;
	
	printf("\n\nN= ");	
	scanf("%d", &N);
	for(n=1;n<=N;n++) {
			printf("%3d, ", cuantos_pasos(n));
			if (n%10==0) 
				printf("\n");
		}
}

int cuantos_pasos(int n) {
	int contador;
	
	for(contador=1; n>1; contador++) 
		n=next(n); 
	return contador; 
}


int next(int n) {
 
    if (n%2) 
		return 3*n+1; 
	else 
		return n/2; 
}