কম্পিউটার

C++ এ একটি সংখ্যা 3 এর একাধিক কিনা তা পরীক্ষা করার জন্য একটি কার্যকরী পদ্ধতি লিখুন


এখানে, আমাদের একটি প্রোগ্রাম লিখতে হবে যা প্রদত্ত সংখ্যাটি 3 এর গুণিতক কিনা তা পরীক্ষা করতে ব্যবহৃত হয়।

একটি সাধারণ সমাধান হল একটি তুচ্ছ সমাধান, সংখ্যাটির সমস্ত অঙ্ক যোগ করে এবং যোগফল যদি তিনটির গুণিতক হয় তবে সংখ্যাটি 3 দ্বারা বিভাজ্য নয় অন্যথায় নয়। কিন্তু এই সমাধানটি সবচেয়ে কার্যকরী নয়৷

একটি দক্ষ সমাধান সংখ্যার বাইনারি উপস্থাপনায় বিট গণনা ব্যবহার করা হবে। যদি বিজোড় অবস্থানে সেট বিটের গণনা এবং জোড় অবস্থানে সেট বিটের গণনার মধ্যে পার্থক্য 3 এর গুণিতক হয় তবে সংখ্যাটি 3 এর গুণিতক।

আমরা একটি লুপ ব্যবহার করব এবং সংখ্যার বিটগুলিকে স্থানান্তর করব এবং বিটগুলির সংখ্যা গণনা করব যা জোড় এবং বিজোড় অবস্থান। পরিশেষে, পার্থক্য তিনটির গুণিতক হলে আমরা চেকটি ফেরত দেব।

বাস্তবায়ন বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

n = 24

আউটপুট

even

ব্যাখ্যা

binary representation = 11000
Evensetbits = 1 , oddsetbits = 1.
Difference = 0, it is divisible.

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int isDivisibleBy3(int n) {
   int oddBitCount = 0;
   int evenBitCount = 0;
   if (n < 0)
      n = -n;
   if (n == 0)
      return 1;
   if (n == 1)
      return 0;
   while (n) {
      if (n & 1)
         oddBitCount++;
      if (n & 2)
         evenBitCount++;
      n = n >> 2;
   }
   return isDivisibleBy3(oddBitCount - evenBitCount);
}
int main() {
   int n = 1241;
   cout<<"The number "<<n;
   if (isDivisibleBy3(n))
      cout<<" is a multiple of 3";
   else
      cout<<" is not a multiple of 3";
   return 0;
}

আউটপুট

The number 1241 is not a multiple of 3

  1. একটি সংখ্যা C++ এ অন্য একটি সংখ্যার শক্তি কিনা তা পরীক্ষা করুন

  2. একটি বড় সংখ্যা C++ এ 20 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  3. C++ এ N একটি পঞ্চভুজ সংখ্যা কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. আর্মস্ট্রং নম্বর চেক করতে C++ প্রোগ্রাম