ตรวจสอบว่ามีจำนวนธรรมดา (Natural Numbers) 3 จำนวนติดกัน ที่ผลรวมเท่ากับตัวเลขที่กำหนดหรือไม่
คณิตศาสตร์
x + (x+1) + (x+2) = 3x + 3 = n → x = (n - 3) / 3 เงื่อนไข: n ≥ 6 และ n หาร 3 ลงตัว
ตัวอย่างโค้ด
const threeConsecutiveSum = sum => {
if (sum < 6 || sum % 3 !== 0) return false;
const x = (sum - 3) / 3;
return [x, x + 1, x + 2];
};
console.log(threeConsecutiveSum(54));
ผลลัพธ์
[ 17, 18, 19 ]
การตรวจสอบ
17 + 18 + 19 = 54 ✓
ขยาย: หา k จำนวนติดกัน
const kConsecutiveSum = (sum, k) => {
// x + (x+1) + ... + (x+k-1) = kx + k(k-1)/2 = sum
// x = (sum - k(k-1)/2) / k
const numerator = sum - k * (k - 1) / 2;
if (numerator <= 0 || numerator % k !== 0) return false;
const x = numerator / k;
return Array.from({ length: k }, (_, i) => x + i);
};