এখানে আমরা দেখব একটি সংখ্যা আনসুয়াল (Unusual) নম্বর কিনা। একটি সংখ্যাকে আনসুয়াল বলা হয় যদি তার সর্বোচ্চ প্রাইম ফ্যাক্টর স্ট্রিক্টলি এর বর্গমূল থেকে বড় হয়। কিছু আনসুয়াল নম্বর: 2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 20, 21, 22, 23, 26, 28, 29, 31, 33, 34, 35, 37, 38, 39, 41, 42, 43, 44, 46।
এটি সমাধান করতে আমরা সর্বোচ্চ প্রাইম ফ্যাক্টর বের করার চেষ্টা করব, তারপর চেক করব ফ্যাক্টরটি সংখ্যার বর্গমূল থেকে বড় কিনা। যদি হয়, তবে সংখ্যাটি আনসুয়াল, অন্যথায় নয়।
উদাহরণ কোড
#include <iostream>
#include <cmath>
using namespace std;
int largestPrimeFactor(int num) {
int max_prime = -1;
while (num % 2 == 0) { // সংখ্যা থেকে সব ২ বাদ দিন
max_prime = 2;
num >>= 1;
}
for (int i = 3; i <= sqrt(num); i += 2) {
while (num % i == 0) {
max_prime = i;
num = num / i;
}
}
if (num > 2)
max_prime = num;
return max_prime;
}
bool isUnusual(int num) {
int largePrimeFactor = largestPrimeFactor(num);
if (largePrimeFactor > sqrt(num)) {
return true;
} else {
return false;
}
}
int main() {
int n = 14;
if (isUnusual(n)) {
cout << n << " is an unusual number";
} else {
cout << n << " is not an unusual number";
}
return 0;
}
আউটপুট
14 is an unusual number