C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

数値が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

出力 −はい

108は、6と36の両方がそれを分割し、完全な正方形ではないため、強力です。

入力 − 64

出力 −いいえ

説明 − 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

  1. C++で多数が11で割り切れるかどうかを確認します

    ここでは、数値が11で割り切れるかどうかを確認する方法を説明します。この場合、その数は非常に多い数です。したがって、数値を文字列として入力します。 数値が11で割り切れるかどうかを確認するには、奇数の位置の値の合計と偶数の位置の値の合計が同じである場合、その数値は11で割り切れます。 例 #include <bits/stdc++.h> using namespace std; bool isDiv11(string num){    int n = num.length();    long odd_sum = 0, even_sum =

  2. Pythonで数値がアキレス数であるかどうかを確認します

    数nがあるとします。 nがアキレス数であるかどうかを確認する必要があります。私たちが知っているように、数は強力な数の場合はアキレス数です(数Nは、その素因数pごとに、p ^ 2もそれを除算する場合、強力な数と呼ばれます)が、完全なべき数ではありません。アキレス数の例には、72、108、200、288、392、432、500、648、675、800、864、968、972、1125があります。 したがって、入力が108のような場合、6と36の両方がそれを分割し、完全な正方形ではないため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数check_powerful(