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

C++-এ সংখ্যাটি অকিলিস নম্বর (Achilles Number) কিনা তা যাচাই করুন


কনসেপ্ট

দেওয়া ধনাত্মক পূর্ণসংখ্যা n সাপেক্ষে, n অকিলিস নম্বর কিনা তা যাচাই করুন। হ্যাঁ হলে 'YES' প্রিন্ট করুন অন্যথায় 'NO'।

অকিলিস নম্বর: গাণিতিকভাবে, অকিলিস নম্বর হল এমন একটি সংখ্যা যা শক্তিশালী (Powerful) কিন্তু পূর্ণ ঘাত (Perfect Power) নয়। একটি সংখ্যা N শক্তিশালী যদি এর সব প্রাইম ফ্যাক্টর p-এর জন্য p²ও N কে ভাগ করে।

প্রথম কিছু অকিলিস নম্বর: ৭২, ১০৮, ২০০, ২৮৮, ৩৯২, ৪৩২, ৫০০, ৬৪৮, ৬৭৫, ৮০০, ৮৬৪, ৯৬৮, ৯৭২, ১১২৫

ইনপুট − 108

আউটপুট − YES

১০৮ শক্তিশালী কারণ ৬ এবং ৩৬ দুটোই এটিকে ভাগ করে এবং এটি পূর্ণ বর্গ নয়।

ইনপুট − 64

আউটপুট − NO

ব্যাখ্যা − ৬৪ শক্তিশালী নম্বর কিন্তু পূর্ণ ঘাত।

পদ্ধতি

  • দেওয়া সংখ্যা N শক্তিশালী কিনা যাচাই করুন।
  • N পূর্ণ ঘাত কিনা যাচাই করুন।
  • যদি N শক্তিশালী হয় কিন্তু পূর্ণ ঘাত না হয়, তবে N অকিলিস নম্বর।

উদাহরণ

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

bool isPowerful1(int n1){ 
    while (n1 % 2 == 0) { 
        int power1 = 0; 
        while (n1 % 2 == 0) { 
            n1 /= 2; 
            power1++; 
        } 
        if (power1 == 1) 
            return false; 
    } 
    for (int factor1 = 3; factor1 <= sqrt(n1); factor1 += 2) { 
        int power1 = 0; 
        while (n1 % factor1 == 0) { 
            n1 = n1 / factor1; 
            power1++; 
        } 
        if (power1 == 1) 
            return false; 
    } 
    return (n1 == 1); 
} 

bool isPower1(int a1){ 
    if (a1 == 1) 
        return true; 
    for (int i1 = 2; i1 * i1 <= a1; i1++) { 
        double val1 = log(a1) / log(i1); 
        if ((val1 - (int)val1) < 0.00000001) 
            return true; 
    } 
    return false; 
} 

bool isAchillesNumber1(int n1){ 
    if (isPowerful1(n1) && !isPower1(n1)) 
        return true; 
    else 
        return false; 
} 

int main(){ 
    int n1 = 108; 
    if (isAchillesNumber1(n1)) 
        cout << "YES" << endl; 
    else 
        cout << "NO" << endl; 
    n1 = 35; 
    if (isAchillesNumber1(n1)) 
        cout << "YES" << endl; 
    else 
        cout << "NO" << endl; 
    return 0; 
}

আউটপুট

YES NO

  1. C++ প্রোগ্রাম: বড় সংখ্যা ৩ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  2. C++ প্রোগ্রাম: বড় সংখ্যা ২৫ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  3. C++ প্রোগ্রাম: বড় সংখ্যা ১১ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  4. পাইথনে আকিলিস নাম্বার চেক করুন