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

N-এর চেয়ে ছোট বা সমান সব সেমি-প্রাইম নম্বর প্রিন্ট করা C++-তে


এই সমস্যায়, একটি পূর্ণসংখ্যা N দেওয়া থাকে। এবং N-এর চেয়ে ছোট বা সমান সব সেমি-প্রাইম নম্বর প্রিন্ট করতে হবে।

এই সমস্যাটি সমাধান করার আগে, সেমি-প্রাইম নম্বর কী সেটি বুঝে নিই।

একটি সেমি-প্রাইম নম্বর হলো এমন একটি সংখ্যা যার মান দুটি ভিন্ন প্রাইম নম্বরের গুণফল।

উদাহরণ নিই:

21 = 3×7 একটি সেমি-প্রাইম নম্বর।

25 = 5×5 একটি সেমি-প্রাইম নম্বর নয়।

এখন, N-এর চেয়ে ছোট বা সমান সেমি-প্রাইম নম্বরের উদাহরণ নিই:

ইনপুট: N = 15 আউটপুট: 6 10 14 15

এই সমস্যাটি সমাধান করার জন্য, N-এর চেয়ে ছোট বা সমান প্রতিটি নম্বর নিতে হবে এবং চেক করতে হবে সেটির ঠিক দুটি ভিন্ন প্রাইম ফ্যাক্টর আছে কিনা।

টিপ: আমরা আমাদের অ্যালগরিদম ৬ থেকে শুরু করতে পারি কারণ সবচেয়ে ছোট সেমি-প্রাইম নম্বর ৬।

C++ উদাহরণ

#include <bits/stdc++.h> using namespace std; vector<int>generateSemiPrimeNumbers(int n){ int index[n + 1]; for (int i = 1; i <= n; i++) index[i] = i; int countDivision[n + 1]; for (int i = 0; i < n + 1; i++) countDivision[i] = 2; for (int i = 2; i <= n; i++) { if (index[i] == i && countDivision[i] == 2) { for (int j = 2 * i; j <= n; j += i) { if (countDivision[j] > 0) { index[j] = index[j] / i; countDivision[j]--; } } } } vector<int> semiPrime; for (int i = 2; i <= n; i++) { if (index[i] == 1 && countDivision[i] == 0) semiPrime.push_back(i); } return semiPrime; } int main(){ int n = 15; cout<<"Semi-prime numbers less that or equal to "<<n<<"are :\n"; vector<int>semiPrime = generateSemiPrimeNumbers(n); for (int i = 0; i < semiPrime.size(); i++) cout<<semiPrime[i]<<"\t"; return 0; }

আউটপুট

১৫-এর চেয়ে ছোট বা সমান সেমি-প্রাইম নম্বরগুলো হলো:

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

  2. C++-এ m দৈর্ঘ্যের কম বা সমান সর্বোচ্চ যোগফল অ্যারে খুঁজুন

  3. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা

  4. C++-এ মিন হিপে নির্দিষ্ট মান x থেকে ছোট সব নোড প্রিন্ট করা