首页 > 代码库 > 每日编程-20170310

每日编程-20170310

题目:如果一个数字能表示为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 }

 

每日编程-20170310