সংখ্যার একটি পরিসীমা সংজ্ঞায়িত করার জন্য আমাদেরকে 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