এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখব যা যাচাই করবে প্রদত্ত সংখ্যাটি k-রফ (k-rough) বা k-জ্যাগড (k-jagged) সংখ্যা কিনা।
যে সংখ্যার সবচেয়ে ছোট মৌলিক গুণনীয়ক (prime factor) প্রদত্ত k-এর চেয়ে বড় বা সমান, সেটিকে k-রফ বা k-জ্যাগড সংখ্যা বলা হয়।
সমস্যা সমাধানের ধাপসমূহ
- সংখ্যা n এবং k ইনিশিয়ালাইজ করুন।
- n-এর সব মৌলিক গুণনীয়ক বের করে একটি ভেক্টরে সংরক্ষণ করুন।
- ভেক্টরের প্রথম উপাদানটি k-এর সাথে তুলনা করে n k-রফ বা k-জ্যাগড সংখ্যা কিনা তা যাচাই করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
vector<int> getPrimes(int n) {
vector<int> primes;
for (int i = 2; i < n; i++) {
if (n % i == 0 && isPrime(i)) {
primes.push_back(i);
}
}
return primes;
}
bool isRoughNumber(int n, int k) {
vector<int> primes = getPrimes(n);
return primes[0] >= k;
}
int main() {
int n = 75, k = 3;
if (isRoughNumber(n, k)) {
cout << n << " is a " << k << " rough number" << endl;
} else {
cout << n << " is not a " << k << " rough number" << endl;
}
return 0;
}
আউটপুট
উপরের প্রোগ্রামটি রান করলে নিচের ফলাফল পাওয়া যাবে:
75 is a 3 rough number
নিষ্কর্ষ
আপনি সব মৌলিক সংখ্যাগুলো ভেক্টরে সংরক্ষণ না করে সরাসরি n-এর প্রথম মৌলিক গুণনীয়ক বের করে তা k-এর সাথে তুলনা করতে পারেন। এটি কম স্পেস ও টাইম কমপ্লেক্সিটিতে কাজ করবে। উপরের মতোদের মতোই একই লজিক ব্যবহার করে আরও অপ্টিমাইজড কোড লিখতে পারেন।
এই টিউটোরিয়াল সম্পর্কে আপনার যেকোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।