Пример #1
0
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;
}
Пример #2
0
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;
}