在C ++中检查数字是否为阿喀琉斯数字

概念

对于给定的正整数n,任务是验证n是否为阿基里斯数。如果将N视为阿喀琉斯数字,我们必须打印“是”,否则打印“否”。

阿喀琉斯数:关于数学,阿喀琉斯数被定义为有力数(如果已经注意到,对于每个素数p,p ^ 2也会除以一个数,则N被认为是有力数)但不是完美的力量。

接下来,显示前几个跟腱数72、108、200、288、392、432、500、648、675、800、864、968、972、1125

输入-108

输出-是

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;
         }
//驱动程序
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
猜你喜欢