int main(int argc, char ** argv) { long long h, H; for(h = 143 + 1, H = polygonal(h, 6); ; h++, H = polygonal(h, 6)) { if(is_polygonal(H, 5) && is_polygonal(H, 3)) { printf("T_%Ld == P_%Ld = H_%Ld = %Ld\n", polygonal_index(H, 3), polygonal_index(H, 5), polygonal_index(H, 6), H); break; } } return 0; }
int main(int argc, char ** argv) { int j, k, m, n; for(j = 0; j < 6; j++) { nums_size[j] = 0; nums_cap[j] = 8; nums[j] = (int *) malloc(nums_cap[j] * sizeof(nums[j][0])); for(k = polygonal_index(j + 3, 1000) - 1; polygonal(j + 3, k) < 1000; k++); m = 0; do { if(m >= nums_cap[j]) { nums_cap[j] *= 2; nums[j] = (int *) realloc(nums[j], nums_cap[j] * sizeof(nums[j][0])); } nums[j][m] = polygonal(j + 3, k); m++; k++; } while(polygonal(j + 3, k) < 10000); nums_size[j] = m - 1; } for(k = 0; k < nums_size[5]; k++) { if(j = foo(nums[5][k], nums[5][k], 4, 1 << 5)) { printf("%d\nsum: %d\n", nums[5][k], j + nums[5][k]); } } /* for(j = 0; j < 6; j++) { printf("%d:\n", j); printf("%d", nums[j][0]); for(k = 1; k < nums_size[j]; k++) { printf(", %d", nums[j][k]); } printf("\n"); } */ return 0; }
int is_polygonal(int s, int p) { return polygonal(s, polygonal_index(s, p)) == p; }