আমরা N উপাদানের একটি অ্যারে arr[] দিয়ে থাকি। লক্ষ্য হল সব বৈধ ইনডেক্স পেয়ার (i,j) গণনা করা যাতে arr[i] arr[j]- দ্বারা বিভাজ্য অথবা arr[j] arr[i]- দ্বারা বিভাজ্য এবং i!=j।
দুটি for লুপ দিয়ে অ্যারে arr[] ট্রাভার্স করা হয় এবং প্রতিটি পেয়ারের জন্য চেক করা হয় arr[i]%arr[j]==0 অথবা arr[j]%arr[i]==0 যখন i!=j। সত্য হলে পেয়ার সংখ্যা বাড়ানো হয়।
উদাহরণ
ইনপুট: Arr[] = { 2,4,3,6 }, N=4
আউটপুট: বৈধ পেয়ার সংখ্যা: ৩
ব্যাখ্যা: বৈধ পেয়ার: (2,4) এখানে 4%2==0, (2,6) এখানে 6%2==0, (3,6) এখানে 6%3==0
ইনপুট: Arr[] = { 2,5,7,9,11 }, N=5
আউটপুট: বৈধ পেয়ার সংখ্যা: ০
ব্যাখ্যা: কোনো সংখ্যা অন্যটিকে পুরোপুরি ভাগ করে না। কোনো পেয়ার তৈরি হয় না।
অ্যাপ্রোচ
- ইন্টিজার অ্যারে Arr[] নেওয়া হয়।
- n ভেরিয়েবলে অ্যারের দৈর্ঘ্য।
countPairs(int arr[], int n)ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে বৈধ পেয়ার সংখ্যা রিটার্ন করে।- দুটি নেস্টেড for লুপ দিয়ে ট্রাভার্স করা হয়। আউটার 0<=i
- যদি arr[i]%arr[j]==0 বা arr[j]%arr[i]==0 হয়, count একবার বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n) {
int count = 0;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (arr[i]%arr[j]==0 || arr[j]%arr[i]==0) {
count++;
}
}
}
return count;
}
int main() {
int Arr[] = { 2,3,4,5,6 };
int len = sizeof(Arr) / sizeof(Arr[0]);
cout << "Count of number of pairs : " << countPairs(Arr, len);
return 0;
}
আউটপুট
Count of number of pairs : 3