超级素数幂--全国模拟(一)

摘要:
【编程题】超级素数幂时间限制:1秒空间限制:32768K如果一个数可以表示为p^q,p是素数,q是大于1的正整数,则称为超级素数幂。现在我们给出一个正整数n。如果n是超素数幂,我们需要找到相应的p,q。
[编程题] 超级素数幂
时间限制:1秒
空间限制:32768K
如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。 
输入描述:
输入一个正整数n(2 ≤ n ≤ 10^18)
 
 
输出描述:
如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。 如果n不是超级素数幂,则输出No
 
输入例子:
27
 
输出例子:
3 3
 
解题思路:枚举q,对于每个q求p,然后判断求出的p是否为整数且为素数,如果是,则输出,不是则继续查找,查找完成还没有结果,则输出NO
 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4  
 5 /*素数判定函数*/
 6 bool isPrime( int n ){
 7     if( n <= 1 ){
 8         return false;
 9     }
10     for( int i = 2; i <= sqrt(n); ++i ){
11         if( n%i == 0 ){
12             return false;
13         }
14     }
15     return true;
16 }
17  
18 int main()
19 {
20     long long int n;
21     while( cin>>n ){
22         int max_q = log2(n);
23         int flag = 0;
24         for( int q = 2; q <= max_q; ++q ){
25             double p = pow( n, 1.0/q );                //p^q = n  ——>  p = n^(1/q)
26             if( p-int(p)==0 && isPrime( int(p) ) ){    //p^q = n  ——>  n开q次方后恰好得到素数p
27                 cout<<int(p)<<" "<<q<<endl;
28                 flag = 1;
29                 break;
30             }
31         }
32         if( !flag ){//未找到满足条件的p,q
33             cout<<"No"<<endl;
34         }
35     }
36     return 0;
37 }

免责声明:文章转载自《超级素数幂--全国模拟(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇lombok日志包的使用Linux服务器上安装织梦CMS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java中double转整型

比方说有一个整型数据 int n=3; 我们用pow函数求出它的平方,此时数据类型为double double s=Math.pow(n,2); 我们要将其转化为整型数据,则应该如下操作 int t=(new Double(s)).intValue(); 有时我们要求的数据范围比较大,int不能满足,则应该转化为long类型 long x=(new Dou...

USACO 1.3 Wormholes

Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfired, causing N wormholes (2 <= N <= 12, N even) to materialize on his farm,...

素数算法大全

注意: 如果没有特殊说明, 以下讨论的都是针对n为素数时的时间复杂度 1. 根据概念判断: 如果一个正整数只有两个因子, 1和p,则称p为素数. 代码: bool isPrime(int n) { if(n < 2) return false; for(int i = 2; i < n; ++i) if...

Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈

python内建数据结构 分类 数值型:  int  float  complex  bool 序列对象: 字符串str  列表list  元组tuple 键值对:  集合set  字典dict 数值型 (list float complex bool都是class) int:python3 中 int 就是长整型,没有大小限制 float:支持十进制和科...

转:C语言中的typeof关键字

http://blog.csdn.net/wslong/article/details/7728811 typeof关键字是C语言中的一个新扩展。 typeof的参数可以是两种形式:表达式或类型。 下面是使用表达式的的例子:     typeof(x[0](1) 这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。 如果将typeof用于...

Mono.Cecil

Mono Cecil十分强大,强大到可以静态注入程序集(注入后生成新的程序集)和动态注入程序集(注入后不改变目标程序集,只在运行时改变程序集行为),它甚至可以用来调试PDB MDB调试符号格式文件。 注:仔细看了下,并不支持“动态”注入,cecil只支持从硬盘加载或从内存读取一个已经被加载了的assembly,然后修改它的副本,最后另存为或者直接调用这个副...