Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में जांचें कि कोई संख्या अकिलीज़ संख्या है या नहीं

अवधारणा

दिए गए धनात्मक पूर्णांक n के संबंध में, यह सत्यापित करना है कि n एक अकिलीज़ संख्या है या नहीं। यदि N अकिलीज़ संख्या है तो 'YES' प्रिंट करें अन्यथा 'NO'।

अकिलीज़ संख्या: गणित में, एक अकिलीज़ संख्या वह संख्या है जो शक्तिशाली है (एक संख्या N को शक्तिशाली कहा जाता है यदि प्रत्येक अभाज्य गुणनखंड p के लिए, p^2 भी इसे विभाजित करता है) लेकिन पूर्ण घात नहीं है।

पहली कुछ अकिलीज़ संख्याएं: 72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125

उदाहरण

इनपुट - 108

आउटपुट - YES

108 शक्तिशाली है क्योंकि 6 और 36 दोनों इसे विभाजित करते हैं और यह पूर्ण वर्ग नहीं है।

इनपुट - 64

आउटपुट - NO

व्याख्या - 64 शक्तिशाली संख्या है लेकिन पूर्ण घात है।

दृष्टिकोण

  • जांचें कि दी गई संख्या N शक्तिशाली है या नहीं।
  • जांचें कि N पूर्ण घात है या नहीं।
  • यदि N शक्तिशाली है लेकिन पूर्ण घात नहीं है, तो N एक अकिलीज़ संख्या है।

C++ कार्यान्वयन

// CPP program to check Achilles Number
#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++ में जांचें कि क्या बड़ी संख्या 25 से विभाज्य है या नहीं

    यहां हम देखेंगे कि कैसे जांचें कि कोई संख्या 25 से विभाज्य है या नहीं। इस मामले में संख्या बहुत बड़ी है। इसलिए हम संख्या को स्ट्रिंग के रूप में रखते हैं। एक संख्या 25 से विभाज्य होगी, जब अंतिम दो अंक 00 हों, या वे 25 से विभाज्य हों। उदाहरण #include <bits/stdc++.h> using namespace std; bool i

  1. - C++ में जांचें कि क्या बड़ी संख्या 11 से विभाज्य है या नहीं

    यहां हम देखेंगे कि कैसे जांचें कि कोई संख्या 11 से विभाज्य है या नहीं। इस मामले में संख्या बहुत बड़ी है। इसलिए हम संख्या को स्ट्रिंग के रूप में रखते हैं। यह जांचने के लिए कि कोई संख्या 11 से विभाज्य है या नहीं, यदि विषम स्थिति के मानों का योग और सम स्थिति के मानों का योग समान है, तो संख्या 11 से वि

  1. - पायथन में अकिलीज़ नंबर की जांच

    समस्या विवरण एक संख्या n दी गई है, जांचें कि क्या यह अकिलीज़ नंबर है। अकिलीज़ नंबर = शक्तिशाली संख्या (हर अभाज्य गुणक p के लिए, p² भी विभाजित करता है) लेकिन पूर्ण घात नहीं (a^b रूप में नहीं)। उदाहरण इनपुट: 108 आउटपुट: True 108 = 2² × 3³ — दोनों अभाज्य गुणकों के वर्ग विभाजित करते हैं, लेकिन 108 पूर्