题目:如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。
输入描述:
输入一个正整数n(2 ≤ n ≤ 10^18)
输出描述:
如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。
如果n不是超级素数幂,则输出No
输入例子:
27
输出例子:
3 3
解答:
1 #include <iostream> 2 #include <math.h> 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 }
时间: 2024-10-23 00:03:23