Khái niệm
Đối với số nguyên dương n đã cho, nhiệm vụ là xác minh xem n có phải là số Achilles hay không. Chúng ta phải in 'CÓ' nếu N được coi là số Achilles còn lại thì in 'KHÔNG'.
Số Achilles:Đối với Toán học, số Achilles được định nghĩa là số mạnh (Số N được cho là Số mạnh nếu người ta lưu ý rằng với mọi thừa số nguyên tố p của nó, p ^ 2 cũng chia hết) nhưng không phải là một sức mạnh hoàn hảo.
Tiếp theo, số Achilles đầu tiên được hiển thị 72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125
Đầu vào - 108
Đầu ra - CÓ
108 là mạnh vì 6 và 36 đều chia nó và nó không phải là hình vuông hoàn hảo.
Đầu vào - 64
Đầu ra - KHÔNG
Giải thích - 64 là con số mạnh mẽ nhưng là sức mạnh hoàn hảo.
Phương pháp tiếp cận
-
Xác minh xem số N đã cho có phải là số mạnh hay không.
-
Xác minh xem N có phải là công suất hoàn hảo hay không.
-
Nếu N mạnh nhưng không hoàn hảo thì N là Số Achilles, ngược lại thì không.
Ví dụ
// 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; }
Đầu ra
YES NO