Made a small change to divide by the GCD. Has major time improvements.

This commit is contained in:
2026-05-06 22:39:51 +03:00
parent 381896c84f
commit 9f1f152c4f
+6 -4
View File
@@ -58,12 +58,14 @@ void generate_factor_pairs(int128_t* sum, int prime_index, int* exponents,
int128_t val1 = values[1] + values[2] + ((n1 + n2) >> 1); int128_t val1 = values[1] + values[2] + ((n1 + n2) >> 1);
int128_t val2 = values[1] + values[2] - ((n1 + n2) >> 1); int128_t val2 = values[1] + values[2] - ((n1 + n2) >> 1);
int128_t greater = values[2] >= val1 ? values[2] : val1; int128_t greater = values[2] >= val1 ? values[2] : val1;
LIMIT = values[1] >= greater ? values[1] * greater / 2 : values[2] * val1 / 2; int128_t gcd1 = gcd3(values[1], values[2], val1);
run_bfs(sum, values[1], values[2], val1, print_mode); int128_t gcd2 = gcd3(values[1], values[2], val2);
LIMIT = values[1] >= greater ? values[1] * greater / (2 * gcd1 * gcd1) : values[2] * val1 / (2 * gcd1 * gcd1);
run_bfs(sum, values[1] / gcd1, values[2] / gcd1, val1 / gcd1, print_mode);
if (val2 >= 0) { if (val2 >= 0) {
greater = values[2] >= val2 ? values[2] : val2; greater = values[2] >= val2 ? values[2] : val2;
LIMIT = values[1] >= greater ? values[1] * greater / 2 : values[2] * val2 / 2; LIMIT =values[1] >= greater ? values[1] * greater / (2 * gcd2 * gcd2) : values[2] * val2 / (2 * gcd2 * gcd2);
run_bfs(sum, values[1], values[2], val2, print_mode); run_bfs(sum, values[1] / gcd2, values[2] / gcd2, val2 / gcd2, print_mode);
} }
} }
return; return;