// JavaScript for puzzle 3: Two logicians. // Global variables. var s = new Array(), p = new Array(); // Generate list of eligible sums. function genSum(upperSum) { var upperX = Math.floor((upperSum-1)/2), c = 0, prod; // Populate p, number of eligible factorizations for each product. for (var i = 2; i <= upperX; i++) for (var j = i+1; i+j <= upperSum; j++) {if (p[prod=i*j]) p[prod]++; else p[prod] = 1;} // Populate s, list of sums that are never the sum of precisely two eligible factors. for (i = 2+3; i <= upperSum; i += 2) { var ok = true; for (j = 2; j < i-j; j++) if (p[j*(i-j)] == 1) {ok = false; break;} if (ok) s[c++] = i; } document.write('
', "Eligible sums: ", s.join(", "), ".
"); } // Generate list of eligible products, with factors, in sum order. function genProd() { var i, prod, sum, p2 = new Array(), si = new Array(), bg = ' style="background:#cfc"', newCell = "| Product | x | y | Sum |
|---|---|---|---|