int main(int argc, char **argv) { ui d, k, i; int n = atoi(argv[1]); mpz_init(tmp1); mpz_init(tmp2); mpz_init_set_ui(acc, 0); mpz_init_set_ui(den, 1); mpz_init_set_ui(num, 1); for (i = k = 0; i < n;) { next_term(++k); if (mpz_cmp(num, acc) > 0) continue; d = extract_digit(3); if (d != extract_digit(4)) continue; putchar('0' + d); if (++i % 10 == 0) printf("\t:%u\n", i); eliminate_digit(d); } return 0; }
static void pidigits(unsigned int n) { int d; unsigned int i = 0, k = 0, m; mpz_init(tmp1); mpz_init(tmp2); mpz_init_set_ui(numer, 1); mpz_init_set_ui(accum, 0); mpz_init_set_ui(denom, 1); for(;;) { do { k++; next_term(k); d = extract_digit(); } while(d == -1); putchar(d + '0'); i++; m = i%10; if(m == 0) printf("\t:%d\n", i); if(i >= n) break; eliminate_digit(d); } if(m) { m = 10 - m; while(m--) putchar(' '); printf("\t:%d\n", n); } }