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

N-এর সমান বা ছোট 2, 3 বা 5-এর গুণিতক খুঁজে বের করা C++-এ

এই সমস্যায়, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল N-এর সমান বা ছোট 2, 3 বা 5-এর গুণিতক খুঁজে বের করা।

সমস্যা বর্ণনা - আমরা 1 থেকে N পর্যন্ত সব এলিমেন্ট যারা 2 বা 3 বা 5 দিয়ে বিভাজ্য তাদের কাউন্ট করব।

উদাহরণ

ইনপুট

N = 7

আউটপুট

5

ব্যাখ্যা

1 থেকে 7 পর্যন্ত সব এলিমেন্ট: 1, 2, 3, 4, 5, 6, 7।
2/3/5 দিয়ে বিভাজ্য এলিমেন্ট: 2, 3, 4, 5, 6

সমাধানের পদ্ধতি

এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল 1 থেকে N পর্যন্ত সব সংখ্যা ট্রাভার্স করা এবং 2 বা 3 বা 5 দিয়ে বিভাজ্য সংখ্যাগুলো কাউন্ট করা।

অ্যালগরিদম

ইনিশিয়ালাইজ - count = 0

স্টেপ ১ - i = 1 থেকে N পর্যন্ত লুপ।

স্টেপ ১.১: if(i%2 == 0 || i%3 == 0 || i%5 == 0), count++।

স্টেপ ২ - count রিটার্ন করুন।

অন্য পদ্ধতি (সেট থিওরি / ইনক্লুশন-এক্সক্লুশন)

একটি আরও দক্ষ পদ্ধতি হল সেট থিওরি ব্যবহার করা।

2 দিয়ে বিভাজ্য সংখ্যা কাউন্ট = n(2)

3 দিয়ে বিভাজ্য সংখ্যা কাউন্ট = n(3)

5 দিয়ে বিভাজ্য সংখ্যা কাউন্ট = n(5)

2 এবং 3 দিয়ে বিভাজ্য = n(2 ∩ 3)

2 এবং 5 দিয়ে বিভাজ্য = n(2 ∩ 5)

3 এবং 5 দিয়ে বিভাজ্য = n(3 ∩ 5)

2, 3 এবং 5 দিয়ে বিভাজ্য = n(2 ∩ 3 ∩ 5)

2 বা 3 বা 5 দিয়ে বিভাজ্য = n(2 ∪ 3 ∪ 5)

সেট থিওরির অযায়ী:

n(2 ∪ 3 ∪ 5) = n(2) + n(3) + n(5) - n(2 ∩ 3) - n(2 ∩ 5) - n(3 ∩ 5) + n(2 ∩ 3 ∩ 5)

সমাধানটি বিট মাস্ক ব্যবহার করে বের করা হয়।

প্রোগ্রাম উদাহরণ (দক্ষ পদ্ধতি)

#include <bits/stdc++.h>
using namespace std;

int countMultiples(int n) {
    int values[] = { 2, 3, 5 };
    int countMultiples = 0, bitMask = pow(2, 3);
    
    for (int i = 1; i < bitMask; i++) {
        int prod = 1;
        for (int j = 0; j < 3; j++) {
            if (i & (1 << j))
                prod = prod * values[j];
        }
        if (__builtin_popcount(i) % 2 == 1)
            countMultiples = countMultiples + n / prod;
        else
            countMultiples = countMultiples - n / prod;
    }
    
    return countMultiples;
}

int main() {
    int n = 13;
    cout << "The number of multiples till " << n << " is " << countMultiples(n) << endl;
    return 0;
}

আউটপুট

The number of multiples till 13 is 9
  1. C++-এ निरপেক্ষ পার্থক্য ১ বা তদন uglיף একটি অ্যারে থেকে সর্বোচ্চ উপাদান নির্বাচন

  2. C++-এ দেওয়া সংখ্যার চেয়ে ছোট বা সমান সর্বোচ্চ স্পেশাল প্রাইম (Special Prime) খুঁজে বের করা

  3. C++ ব্যবহার করে n-র চেয়ে ছোট বা সমান সব ফ্যাক্টোরিয়াল নম্বর বের করা

  4. C++ প্রোগ্রাম: ইউনিক পেয়ার বের করা যারা N-র চোয় ছোট ও শর্ত পূরণ করে