#include #include int print_help(char *argv[]) { fprintf(stderr,"Usage: %s " "\nMade by samuel@yakubos.org\n\n", argv[0]); return 1; } int main(int argc, char *argv[]) { if ( argc != 2 ) return print_help(argv); char *endptr; long int_number = strtol(argv[1], &endptr, 10); /* check the number for nonsense */ if ( int_number <= 0 ) return print_help(argv); if ( *endptr != '\0' ) return print_help(argv); unsigned long long long_num = int_number; int steps = 0; while ( long_num > 1 ) { long_num = ( long_num & 1 ) ? long_num * 3 + 1 : long_num / 2; printf("%llu\n", long_num); steps++; } printf("%s took %d steps\n", argv[1], steps); return 0; }