समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक सकारात्मक पूर्णांक लेता है। हमारे फ़ंक्शन को इस संख्या को अभाज्य संख्याओं की कुछ घातों के योग के रूप में प्रस्तुत करना चाहिए।
इसलिए, संख्या n के लिए, हमारे फ़ंक्शन को इस तरह की एक स्ट्रिंग वापस करनी चाहिए -
n = "(p1**n1)(p2**n2)...(pk**nk)"
जहां p1, p2, p3..pk अभाज्य संख्याएं हैं और n1, n2,..nk उनकी गैर-ऋणात्मक शक्तियां हैं और a ** b का अर्थ है a घात से घात b.
उदाहरण
निम्नलिखित कोड है -
const isPrime = num => { for(let i = 2; i < num; i++){ if(num % i === 0){ return false; } }; return num > 1; } const count = (arr = [], n = 1) => { for(const k in arr){ if(n % k === 0){ arr[k] += 1; return count(arr, n / k) } }; return arr; }; const primeFactors = (n) => { const res = []; for(let i = 2; i < n; i++){ if(isPrime(i)){ res.push(i); } }; const arr = []; for(const el in res){ arr[el] = 0; }; count(arr,n); let str = ''; for(const x in arr){ if(arr[x] > 1){ str += '(%s**%s)' %(x,arr[x]) }else if(arr[x] === 1){ str += '(%s)' % (x) }; }; return str }; console.log(primeFactors(86240));
आउटपुट
(2**5)(5)(7**2)(11)