我们有一个从1到任意数字的数字序列,我们称它为num。我们必须从序列中选择两个这样的数字(我们叫它们m和n),使得:
sum(1 to num) - (m + n) = m * n
最后,我们应该返回一个包含所有这些数字的组的数组。
例如-
如果输入是-
const num = 10;
那么输出应该是-
const output = [ [7, 6] ];
因为sum(1到10)= 55
和,
55 - (6 + 7) = 6 * 7 = 42
为此的代码将是-
const num = 10; const pickNumbers = num => { const sum = (num) * (num + 1) * (.5); const results = []; for (let n = 1; n <= num; n++) { let first = sum - n; let second = n + 1; if (first % second === 0) { let m = first / second; if (m < num && m !== n && results.every(group => group[0] + group[1] !== m + n)){ results.push([m, n]); } } } return results; } console.log(pickNumbers(10));输出结果
控制台中的输出将是-
[ [7, 6] ]