int main(int argc, char *argv[]) { int rc = 0, iterations = 10, i = 0, l = 0; char *num = NULL; if (argc < 2) { usage(argv[0]); rc = 1; goto cleanup; } num = malloc(sizeof(char) * (int)strlen(argv[1]) + 1); num = argv[1]; if (argc > 2) { iterations = atoi(argv[2]); } printf("%s\n", num); for (i = 0, l = iterations; i < l; i++) { next_num(&num, num); printf("%s\n", num); } cleanup: if (num) { free(num); } return rc; }
long long min_x_solution(long long d) { number_t num; fraction_t x_over_y; long long * seq; // expansion sequence for sqrt(d) long long seq_size, seq_cap; // num = a * (sqrt(b) - c) / d num.a = 1; num.b = d; num.c = 0; num.d = 1; seq_size = 0; seq_cap = 4; seq = (long long *) malloc(seq_cap * sizeof(seq[0])); do { if(seq_size >= seq_cap) { seq_cap *= 2; seq = (long long *) realloc(seq, seq_cap * sizeof(seq[0])); } seq[seq_size] = next_num(&num); seq_size++; x_over_y = expanded_sequence(seq, seq_size); } while(!is_valid_solution(d, x_over_y.num, x_over_y.denom)); free(seq); return x_over_y.num; }