একটি সংখ্যার সব প্রাইম ফ্যাক্টর (যে প্রাইম সংখ্যাগুলো সংখ্যাটিকে বিভাজ্য করে) বের করা।
উদাহরণ
18 = 2 × 3 × 3 প্রাইম ফ্যাক্টর: [2, 3] (ইউনিক) 105 = 3 × 5 × 7 প্রাইম ফ্যাক্টর: [3, 5, 7]
সমাধান
const isPrime = (n) => {
if (n < 2) return false;
if (n === 2) return true;
if (n % 2 === 0) return false;
for (let i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i === 0) return false;
}
return true;
};
const findPrimeFactors = (num) => {
const factors = [];
let n = Math.abs(num);
// ২ দিয়ে ভাগ করা
if (n % 2 === 0) {
factors.push(2);
while (n % 2 === 0) n /= 2;
}
// বিজোড় ফ্যাক্টর চেক
for (let i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i === 0 && isPrime(i)) {
factors.push(i);
while (n % i === 0) n /= i;
}
}
// যদি n > 1 থাকে, তবে সেটি প্রাইম
if (n > 1) factors.push(n);
return factors;
};
// আরও দক্ষ পদ্ধতি (ট্রায়াল ডিভিশন)
const primeFactorsOptimized = (num) => {
const factors = [];
let n = Math.abs(num);
for (let i = 2; i * i <= n; i++) {
while (n % i === 0) {
if (!factors.includes(i)) factors.push(i);
n /= i;
}
}
if (n > 1) factors.push(n);
return factors;
};
// টেস্ট
console.log(findPrimeFactors(18)); // [2, 3]
console.log(findPrimeFactors(105)); // [3, 5, 7]
console.log(primeFactorsOptimized(100)); // [2, 5]
প্রাইম ফ্যাক্টরাইজেশন (সব ফ্যাক্টর সহ মাল্টিপ্লিসিটি)
const primeFactorization = (num) => {
const factors = [];
let n = Math.abs(num);
for (let i = 2; i * i <= n; i++) {
while (n % i === 0) {
factors.push(i);
n /= i;
}
}
if (n > 1) factors.push(n);
return factors;
};
console.log(primeFactorization(18)); // [2, 3, 3]
console.log(primeFactorization(100)); // [2, 2, 5, 5]
উৎপাদন
[2, 3]