对于给定的正整数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