题目:如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。
输入描述:输入一个正整数n(2 ≤ n ≤ 10^18)输出描述:
如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。如果n不是超级素数幂,则输出No输入例子:
27输出例子:
3 3解答:
1 #include2 #include 3 using namespace std; 4 5 6 int main() { 7 long long n, m, i = 0, j = 2; 8 cin >> n; 9 long long genhaoN = (long long)sqrt(n)+1;10 for (; j <= genhaoN; j++)11 {12 m = n;13 i = 0;14 while (m%j == 0 && m != 0)15 {16 m /= j;17 i++;18 }19 if (m == 1)20 {21 cout << j << " " << i << endl;22 break;23 }24 }25 if (m != 1)26 {27 cout << "No" << endl;28 }29 }