#include #include int print_help(char *argv[]) { printf("Usage: %s " "\nMade by samuel@yakubos.org\n\n", argv[0]); return 1; } int main(int argc, char *argv[]) { if ( argc < 2 || argc > 2) return print_help(argv); char *endptr; int int_number = strtol(argv[1], &endptr, 10); if ( *endptr != '\0' ) return print_help(argv); /* check the number for nonsense */ if ( int_number <= 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); }