Source

snippets / euler / 025.c

Full commit
// project euler - problem 25
// my first attempt, *very* lazy digit counting


#include <gmp.h>
#include <stdio.h>

int numdigits(mpz_t n) {
	return 2;
}

int main() {
	mpz_t a, b, c;
	size_t len;
	int i;

	mpz_init(a);
	mpz_init(b);
	mpz_init(c);

	mpz_set_ui(a, 1);
	mpz_set_ui(b, 1);

	for (i=3 ; i; i++) {
		// rotate through a, b, and c to save time
		if(i % 3 == 0) {
			mpz_add(c, a, b);
			len = mpz_out_str(stdout, 10, c);
			putch('\n');
			if(len >= 1000)
				break;
		} else if (i % 3 == 1) {
			mpz_add(a, b, c);
			len = mpz_out_str(stdout, 10, a);
			putch('\n');
			if(len >= 1000)
				break;
		} else if (i % 3 == 2) {
			mpz_add(b, c, a);
			len = mpz_out_str(stdout, 10, b);
			putch('\n');
			if(len >= 1000)
				break;
		}
	}
	printf("i:%i\n", i);
	return 0;
}