在 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 是阿基里斯數。否則它不是。

示例

 現場演示

// 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

更新於: 2020-07-23

133 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.