কম্পিউটার

C++-এর সমস্ত অ্যারের উপাদান দ্বারা বিভাজ্য একটি পরিসরে সংখ্যা গণনা করুন


সংখ্যার একটি পরিসীমা সংজ্ঞায়িত করার জন্য আমাদেরকে START এবং END দুটি সংখ্যা দেওয়া হয়েছে। এবং ধনাত্মক সংখ্যার একটি অ্যারে Arr[]। লক্ষ্য হল Arr[] এর সমস্ত উপাদান দ্বারা বিভাজ্য এবং [START,END] রেঞ্জে থাকা সমস্ত সংখ্যা খুঁজে বের করা।

পদ্ধতি 1 ( সরল দৃষ্টিভঙ্গি )

আমরা START থেকে END পর্যন্ত সংখ্যাগুলি অতিক্রম করে এটি করব এবং প্রতিটি সংখ্যার জন্য আমরা অ্যারের সমস্ত উপাদান দ্বারা সংখ্যাটি বিভাজ্য কিনা তা পরীক্ষা করব। যদি হ্যাঁ ইনক্রিমেন্ট কাউন্ট।

পদ্ধতি 2 ( অ্যারের উপাদানগুলির LCM দ্বারা বিভাজ্যতা পরীক্ষা করুন)

আমরা সমস্ত অ্যারের উপাদানগুলির LCM খুঁজে পাব এবং তারপর পরিসরে [START,END] সমস্ত সংখ্যা পরীক্ষা করে গণনা করব যা সেই LCM দ্বারা সম্পূর্ণরূপে বিভাজ্য৷

উদাহরণ দিয়ে বোঝা যাক।

ইনপুট

START=1 END=20 Arr[]= { 2, 4, 8 }

আউটপুট

Numbers that are divisible by all array elements: 2

ব্যাখ্যা

Numbers 8 and 16 are in the range that are divisible by all array elements.

ইনপুট

START=100 END=200 Arr[]= { 230, 321, 490, 521 }

আউটপুট

Numbers that are divisible by all array elements: 0

ব্যাখ্যা

No number between 100 to 200 divisible by any array element.

পদ্ধতি 1 ( সরল দৃষ্টিভঙ্গি )

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • আমরা পরিসীমা ভেরিয়েবল হিসাবে একটি পূর্ণসংখ্যা START এবং END নিই।

  • ফাংশন দ্বারা বিভাজ্য করা যায় (int start, int end, int arr[], int len) রেঞ্জ ভেরিয়েবল এবং অ্যারে নেয় এবং সমস্ত অ্যারে উপাদান দ্বারা বিভাজ্য সংখ্যার গণনা প্রদান করে৷

  • এই ধরনের সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনা 0 হিসাবে নিন।

  • পরিবর্তনশীল পতাকাকে 0

    হিসেবে নিন
  • লুপ ব্যবহার করে সংখ্যার সীমা অতিক্রম করে। i=start to i=end

  • এখন প্রতিটি সংখ্যার জন্য num=i, যখন লুপ ব্যবহার করে সংখ্যাটি সমস্ত অ্যারে উপাদান দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন৷

  • যদি সমস্ত উপাদান সম্পূর্ণরূপে সংখ্যা ভাগ করে, তাহলে ফ্ল্যাগ=1 সেট করুন।

  • বাইরে থাকাকালীন যদি ফ্ল্যাগ=1 ইনক্রিমেন্ট গণনা

  • সমস্ত লুপ গণনার শেষে একটি মোট সংখ্যা থাকবে যা অ্যারের সমস্ত উপাদান দ্বারা বিভাজ্য৷

  • ফলাফল হিসাবে গণনা ফেরত দিন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int divisiblebyArr(int start, int end, int arr[], int len){
   int count = 0;
   int flag=0;
   int index=0;
   for (int i = start; i <= end; i++){
      int num = i;
      index=0;
      while(index<len){
         if(num % arr[index++] == 0)
            { flag=1; }
         else{
            flag=0;
            break;
         }
      }
      if (flag == 1)
         { count++; }
      }
   return count;
}
int main(){
   int START = 5, END = 20;
   int Arr[] = {2,4,8 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   cout <<"Numbers that are divisible by all array elements: "<< divisiblebyArr(START,END,Arr,len);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Numbers that are divisible by all array elements: 2

পদ্ধতি 2 ( LCM পদ্ধতি )

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • আমরা পরিসীমা ভেরিয়েবল হিসাবে একটি পূর্ণসংখ্যা START এবং END নিই।

  • ফাংশন getLCM(int a, int b) দুটি সংখ্যা নেয় এবং তাদের মধ্যে LCM প্রদান করে প্রথম সংখ্যাটি খুঁজে বের করে যা উভয় while loop ব্যবহার করে বিভাজ্য।

  • ফাংশন getLCMArray(int arr[], int n) একটি অ্যারে এবং এর দৈর্ঘ্য ইনপুট হিসাবে নেয় এবং অ্যারের সমস্ত উপাদানের LCM প্রদান করে৷

  • getLCM(arr[0], arr[1]) হিসাবে প্রথম LCM গণনা করুন। এর পর পরপর গেটএলসিএম(lcm, arr[i]) কল করে আগের lcm এর lcm এবং arr[i] খুঁজুন যেখানে i=2 থেকে i

  • ফাংশন দ্বারা বিভাজ্য করা যায় (int start, int end, int arr[], int len) রেঞ্জ ভেরিয়েবল এবং অ্যারে নেয় এবং সমস্ত অ্যারে উপাদান দ্বারা বিভাজ্য সংখ্যার গণনা প্রদান করে৷

  • এই ধরনের সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনা 0 হিসাবে নিন।

  • পরিবর্তনশীল lcm কে getLCMArray(int arr[], int len) হিসাবে নিন।

  • লুপ ব্যবহার করে সংখ্যার সীমা অতিক্রম করে। i=start to i=end

  • এখন প্রতিটি সংখ্যা i এর জন্য, এটি বিভাজ্য lcm কিনা তা পরীক্ষা করুন। সত্য হলে, সংখ্যা বৃদ্ধি করুন।

  • সমস্ত লুপ গণনার শেষে একটি মোট সংখ্যা থাকবে যা অ্যারের সমস্ত উপাদান দ্বারা বিভাজ্য৷

  • ফলাফল হিসাবে গণনা ফেরত দিন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int getLCM(int a, int b){
   int m;
   m = (a > b) ? a : b;
   while(true){
      if(m % a == 0 && m % b == 0)
         return m;
      m++;
   }
}
int getLCMArray(int arr[], int n){
   int lcm = getLCM(arr[0], arr[1]);
   for(int i = 2; i < n; i++){
      lcm = getLCM(lcm, arr[i]);
   }
   return lcm;
}
int divisiblebyArr(int start, int end, int arr[], int len){
   int count = 0;
   int flag=0;
   int lcm=getLCMArray(arr,len);
   for (int i = start; i <= end; i++){
      if(i%lcm==0)
         { count++; }
      }
   return count;
}
int main(){
   int START = 5, END = 20;
   int Arr[] = {2,4,8 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   cout <<"Numbers that are divisible by all array elements: "<< divisiblebyArr(START,END,Arr,len);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Numbers that are divisible by all array elements: 2

  1. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল

  2. প্রিন্ট অ্যারে উপাদান যা C++ এ অন্তত একটি অন্য দ্বারা বিভাজ্য

  3. অ্যারের সমস্ত উপাদানকে C++ এ 4 দ্বারা বিভাজ্য করার ন্যূনতম পদক্ষেপ

  4. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়