अवधारणा
दिए गए धनात्मक पूर्णांक n के संबंध में, कार्य यह सत्यापित करना है कि n एक अकिलीज़ संख्या है या नहीं। यदि N को अकिलीज़ नंबर माना जाता है तो हमें 'YES' प्रिंट करना होगा अन्यथा 'NO' प्रिंट करना होगा।
Achilles संख्या:गणित के संबंध में, एक Achilles संख्या को एक शक्तिशाली संख्या के रूप में परिभाषित किया जाता है (एक संख्या N को शक्तिशाली संख्या कहा जाता है यदि यह नोट किया गया है कि इसके प्रत्येक अभाज्य कारक p के लिए, p^2 भी इसे विभाजित करता है) लेकिन एक पूर्ण शक्ति नहीं।
निम्नलिखित में, पहले कुछ अकिलीज़ नंबर प्रदर्शित होते हैं72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125
इनपुट - 108
आउटपुट - हाँ
108 शक्तिशाली है क्योंकि 6 और 36 दोनों इसे विभाजित करते हैं और यह पूर्ण वर्ग नहीं है।
इनपुट - 64
आउटपुट -नहीं
स्पष्टीकरण −64 शक्तिशाली संख्या है लेकिन पूर्ण शक्ति है।
दृष्टिकोण
-
सत्यापित करें कि दी गई संख्या N एक शक्तिशाली संख्या है या नहीं।
-
सत्यापित करें कि N एक पूर्ण शक्ति है या नहीं।
-
यदि N शक्तिशाली है लेकिन पूर्ण नहीं है, तो N एक Achilles संख्या है। अन्यथा यह नहीं है।
उदाहरण
// CPP program to check Primorial Prime
#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;
}
// Driver Program
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