#include #include #include int valid_number(char *number); long convert_string_to_int(char *no); int main(int argc, char *argv[]) { long begin = 0; long end = 0; int valid = 0; char buff[12] = ""; if (argc <= 2) return -1; begin = convert_string_to_int(argv[1]); // converting string to int end = convert_string_to_int(argv[2]); // and inserting it in variable printf("begin: %d end: %d\r\nlooking for valid numbers..\r\n", begin, end); for(int i = 0; i <= end-begin; i++) { begin++; sprintf(buff,"%d", begin); if (valid_number(buff) == 1) valid++; // printf("string:: int(%d) string(%s) valid ? %d\r\n", begin, buff, valid_number(buff)); } printf("found: %d\r\n", valid); return 0; } long convert_string_to_int(char *no) { long l; errno=0; l=strtol(no, 0, NULL); if(errno == 0) { return l; } else { return 0; } } int valid_number(char *number) { int i, n, sum = 0; char alternate = 0; for (i = strlen(number) - 1; i >= 0; i--) { n = number[i] - '0'; if (alternate) { n *= 2; if (n > 9) n = (n % 10) + 1; } sum += n; alternate = !alternate; } return (sum % 10 == 0); }