কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে রেঞ্জে প্রাইম নম্বর যাদের ডিজিট স্কয়ার সাম ১ হয়

সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি নম্বরের রেঞ্জ অ্যারে নেবে। ফাংশনটি এমন প্রাইম নম্বরের কাউন্ট রিটার্ন করবে যাদের ডিজিটের বর্গ যোগফল (squared sum of digits) চূড়ান্তভাবে ১ দিয়ে ফলাফল দেয়।

উদাহরণস্বরূপ, ২৩ একটি প্রাইম নম্বর এবং:

2² + 3² = 13 
1² + 3² = 10 
1² + 0² = 1

অতএব, ২৩ একটি বৈধ নম্বর।

উদাহরণ

নিচে কোড দেওয়া হলো:

const range = [2, 212]; 
String.prototype.reduce = Array.prototype.reduce; 
const isPrime = (n) => { 
   if ( n<2 ) return false; 
   if ( n%2===0 ) return n===2; 
   if ( n%3===0 ) return n===3; 
   for ( let i=5; i*i<=n; i+=4 ) { 
      if ( n%i===0 ) return false; 
          i+=2; 
      if ( n%i===0 ) return false; 
   } 
   return true; 
} 
const desiredSeq = (n) => { 
   let t=[n]; 
   while ( t.indexOf(n)===t.length-1 && n!==1 ) 
   t.push(n=Number(String(n).reduce( (acc,v) => acc+v*v, 0 ))); 
   return n===1; 
} 
const countDesiredPrimes = ([a, b]) => { 
   let res=0; 
   for ( ; a<b; a++ ) 
      if ( isPrime(a) && desiredSeq(a) ) 
      res++; 
   return res; 
} 
console.log(countDesiredPrimes(range));

আউটপুট

12
  1. জাভাস্ক্রিপ্টে অ্যারেতে কনsekutিভ নম্বর ধারণকারী জোড়ার কাউন্ট

  2. জাভাস্ক্রিপ্টে রেঞ্জের মধ্যে নির্দিষ্ট সংখ্যা দিয়ে বিভাজ্য সংখ্যার গণনা

  3. জাভাস্ক্রিপ্টে একটি রেঞ্জের মধ্যে প্রাকৃতিক সংখ্যাদের ঘনের যোগফল বের করা

  4. জাভাস্ক্রিপ্টে একটি রেঞ্জের মধ্যে ইচ্ছিত জোড়া (pairs) জেনারেট করা