Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số có phải là số Achilles hay không trong C ++

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