একটি সংখ্যা ফিবোনাচ্চি সিরিজে আছে কিনা তা চেক করা।
ফিবোনাচ্চি সিরিজ
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
গাণিতিক বৈশিষ্ট্য (দ্রুত চেক)
একটি সংখ্যা n ফিবোনাচ্চি হলে এবং কেবলই 5n²+4 বা 5n²-4 পারফেক্ট স্কয়ার হবে।
সমাধান ১: লুপ (সহজ)
const isFibonacci = (num) => {
if (num < 0) return false;
if (num === 0 || num === 1) return true;
let a = 0, b = 1;
while (b < num) {
[a, b] = [b, a + b];
}
return b === num;
};
// টেস্ট
console.log(isFibonacci(89)); // true
console.log(isFibonacci(90)); // false
console.log(isFibonacci(144)); // true
সমাধান ২: গাণিতিক (O(1))
const isPerfectSquare = (x) => {
const s = Math.sqrt(x);
return s * s === x;
};
const isFibonacciMath = (num) => {
if (num < 0) return false;
const n2 = num * num;
return isPerfectSquare(5 * n2 + 4) || isPerfectSquare(5 * n2 - 4);
};
// টেস্ট বড় সংখ্যা
console.log(isFibonacciMath(102334155)); // true (40th Fibonacci)
console.log(isFibonacciMath(102334156)); // false
তুলনা
| পদ্ধতি | সময় জটিলতা | সীমাবদ্ধতা |
|---|---|---|
| লুপ | O(n) - n = ফিব নম্বর | বড় সংখ্যার জন্য ধীর |
| গাণিতিক | O(1) | ফ্লোটিং পয়েন্ট প্রিসিশন ইশ্যু বড় সংখ্যায় |
উৎপাদন
true