在 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
广告