একটি সংখ্যা n কে তিনটি последователь প্রাকৃতিক সংখ্যার যোগফল হিসেবে প্রকাশ করা যায় কিনা চেক করা।
গাণিতিক বিশ্লেষণ
তিনটি последователь সংখ্যা: x, x+1, x+2
যোগফল: x + (x+1) + (x+2) = 3x + 3 = 3(x+1)
তাই n অবশ্যই ৩ দিয়ে বিভাজ্য হতে হবে এবং n ≥ 6 (১+২+৩=৬)।
সমাধান
const threeConsecutiveSum = (sum) => {
// শর্তাবলী চেক
if (sum < 6 || sum % 3 !== 0) {
return false;
}
// x = (sum - 3) / 3
const x = (sum - 3) / 3;
// প্রাকৃতিক সংখ্যা চেক
if (!Number.isInteger(x) || x < 1) return false;
return [x, x + 1, x + 2];
};
// টেস্ট
console.log(threeConsecutiveSum(54)); // [17, 18, 19] → 17+18+19=54
console.log(threeConsecutiveSum(6)); // [1, 2, 3]
console.log(threeConsecutiveSum(7)); // false (৩ দিয়ে বিভাজ্য নয়)
console.log(threeConsecutiveSum(5)); // false (< 6)
console.log(threeConsecutiveSum(999)); // [332, 333, 334]
ব্যাখ্যা
- sum % 3 === 0: যোগফল ৩ দিয়ে বিভাজ্য হতে হবে
- sum >= 6: ন্যূনতম ১+২+৩=৬
- x = (sum-3)/3: প্রথম সংখ্যা বের করা
সাধারণীকরণ: kটি последователь সংখ্যা
const kConsecutiveSum = (sum, k) => {
// যোগফল = k*x + k(k-1)/2
// x = (sum - k(k-1)/2) / k
const numerator = sum - k * (k - 1) / 2;
if (numerator % k !== 0 || numerator <= 0) return false;
const x = numerator / k;
return Array.from({ length: k }, (_, i) => x + i);
};
console.log(kConsecutiveSum(54, 3)); // [17, 18, 19]
console.log(kConsecutiveSum(30, 4)); // [6, 7, 8, 9]
উৎপাদন
[ 17, 18, 19 ]