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

C++ দিয়ে প্রাইম ডিজিট (২, ৩, ৫, ৭) দিয়ে তৈরি nth সংখ্যা বের করা


এই সমস্যাতে, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল প্রাইম ডিজিট (২, ৩, ৫, ৭) দিয়ে তৈরি nth সংখ্যা বের করা।

প্রাইম ডিজিট দিয়ে তৈরি সিরিজটি হল, ২, ৩, ৫, ৭, ২২, ২৩, ২৫, ২৭, ৩২, ৩৩...

উদাহরণ দেখি:

ইনপুট: N = 6 আউটপুট: 23

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

এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল দেওয়া ইনডেক্সের সংখ্যা বের করা অর্থাৎ সিরিজের টার্ম বের করা। এর জন্য সিরিজটি পর্যবেক্ষণ করতে হবে।

আমাদের চারটি ভিন্ন প্রাইম সংখ্যা আছে তাই সিরিজটিকে একটি চার-ডিজিট নম্বর সিস্টেম হিসেবে চিন্তা করা যাক। এই নম্বর সিস্টেমে x লেন্থের 4x সংখ্যা থাকে।

এখন সমস্যা সমাধানের জন্য, আমাদের সিরিজে যেসব লেন্থের সংখ্যা তৈরি হয়েছে সেটি বের করব। তারপর Nth সংখ্যা কাউন্ট করে প্রিন্ট করব।

Nth সংখ্যা বের করতে লেন্থ ব্যবহার করে আমরা (x-1) লেন্থের প্রথম সংখ্যা থেকে কাউন্ট শুরু করব এবং N কাউন্ট করব।

উদাহরণ

#include <iostream> #include <math.h> using namespace std; void findNthNumber(int n){ long x = 1; long lastNum = 0; while (true) { long currNum = lastNum + pow(4, x); if (lastNum < n && currNum >= n) break; x++; lastNum = currNum; } for (int i = 1; i <= x; i++) { for (long j = 1; j <= 4; j++) { if (lastNum + pow(4, x - i) < n) lastNum += pow(4, x - i); else { if (j == 1) cout<<"2"; else if (j == 2) cout<<"3"; else if (j == 3) cout<<"5"; else if (j == 4) cout<<"7"; break; } } } } int main(){ int N = 32; cout<<N<<"th number made of prime digits is "; findNthNumber(N); return 0; }

আউটপুট

32th number made of prime digits is 257 

  1. C++-এ N-তম ট্রিবোনাচ্চি সংখ্যা

  2. ৪ ও ৭ ডিজিট দিয়ে ন্যূনতম লাকি নম্বর (নির্দিষ্ট সম) C++-তে

  3. একটি সংখ্যা এবং তার সর্বোচ্চ প্রাইম ফ্যাক্টরের যোগফল (C++)

  4. ১ থেকে n পর্যন্ত শুধু ০ এবং ১ অঙ্ক সম্বলিত পূর্ণসংখ্যা গণনা করা C++-তে