id=1730">Perfect Pth Powers

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 16746   Accepted: 3799

Description

We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, for some integer b, x = b3. More generally, x is a perfect pth power
if, for some integer b, x = bp. Given an integer x you are to determine the largest p such that x is a perfect pth power.

Input

Each test case is given by a line of input containing x. The value of x will have magnitude at least 2 and be within the range of a (32-bit) int in C, C++, and Java. A line containing 0 follows the last test case.

Output

For each test case, output a line giving the largest integer p such that x is a perfect pth power.

Sample Input

17
1073741824
25
0

Sample Output

1
30
2

题意:给出一个整数x,把x写成x=a^p。求p最大是多少?

分析:把x分解质因数,x = a1^b1 * a2^b2 … ak^bk,则终于结果为b1,b2,…bk的最大公约数。

注意x有可能是负数。

假设x是负数,则要把求得的答案一直除以2,知道结果一个奇数,由于一个数的偶数次方不可能是负数。

#include <cstdio>
#include <cmath>
#include <cstring> const int N = 66700;
int is[N];
int prime[7000], prime_cnt; void get_prime() { //筛法预处理出素数
for(int i = 0; i < N; i++) is[i] = 1;
is[0] = is[1] = 0;
prime_cnt = 0;
int m = (int)sqrt(N + 0.5);
for(int i = 2; i < N; i++) {
if(is[i]) {
prime[prime_cnt++] = i;
if(i <= m) {
for(int j = i * i; j < N; j += i)
is[j] = 0;
}
}
}
} int gcd(int a, int b) { //求最大公约数
if(a < b) return gcd(b, a);
if(b == 0) return a;
return gcd(b, a % b);
} int main() {
get_prime();
long long n; //不知道当n为int时为什么会TLE
while(~scanf("%lld", &n) && n) {
int flag = 0;
if(n < 0) {
flag = 1;
n = -n;
}
int ans = 0;
for(int i = 0; i < prime_cnt && n > 1; i++) {
if(n % prime[i] == 0) {
int cnt = 0;
while(n % prime[i] == 0) {
n /= prime[i];
cnt++;
}
ans = gcd(ans, cnt);
}
}
if(n > 1) ans = gcd(ans, 1); //假设n不为1,则此时的n必为是一个素数
if(flag) {
while(ans % 2 == 0) ans /= 2;
}
printf("%d\n", ans);
}
return 0;
}

poj 1730Perfect Pth Powers(分解质因数)的更多相关文章

  1. UVa 10622 (gcd 分解质因数) Perfect P-th Powers

    题意: 对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值. 分析: 将x分解质因数,然后求所有指数的gcd即可. 对于负数还要再处理一下,负数求得的p必须是奇数才行. #inclu ...

  2. POJ 1142:Smith Numbers(分解质因数)

                                   Smith Numbers Time Limit: 1000MS   Memory Limit: 10000K Total Submiss ...

  3. UVA 10622 - Perfect P-th Powers(数论)

    UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...

  4. POJ1811(SummerTrainingDay04-G miller-rabin判断素性 && pollard-rho分解质因数)

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 35528   Accepted: 9479 Case ...

  5. java分解质因数

      package test; import java.util.Scanner; public class Test19 { /** * 分析:对n进行分解质因数,应先找到一个最小的质数k * 最小 ...

  6. 程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)

    1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...

  7. 【python】将一个正整数分解质因数

    def reduceNum(n): '''题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5''' print '{} = '.format(n), : print 'Pleas ...

  8. light oj 1236 分解质因数

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/H 题意:求满足1<=i<=j<=n ...

  9. 【基础数学】质数,约数,分解质因数,GCD,LCM

    1.质数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. 2.约数: 如 ...

随机推荐

  1. 面试题之redis单线程为什么性能很高

    原因是,使用了多路复用技术. 什么是多路复用技术:多个客户端使用一个信道,并且通过一个信道进行传输

  2. Linux 之 rsync实现服务器的文件同步

    rsync实现服务器的文件同步 参考文献链接: 一.rsync实现负载均衡集群文件同步,搭建线上测试部署环境 二.rsync. 三.rsync常见错误. 四.rsync 安装使用详解. 环境部署: 服 ...

  3. 线程池之ThreadPoolExecutor线程池源码分析笔记

    1.线程池的作用 一方面当执行大量异步任务时候线程池能够提供较好的性能,在不使用线程池的时候,每当需要执行异步任务时候是直接 new 一线程进行运行,而线程的创建和销毁是需要开销的.使用线程池时候,线 ...

  4. [Bzoj4942][Noi2017]整数(线段树)

    4942: [Noi2017]整数 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 363  Solved: 237[Submit][Status][D ...

  5. LightOj 1215 Finding LCM

    Discription LCM is an abbreviation used for Least Common Multiple in Mathematics. We say LCM (a, b, ...

  6. [ONTAK2010]Peaks

    题目大意: 一个图上有$n(n\leq100000)$个带权点,$m(m\leq500000)$条带权边.有$q(q\leq500000)$组询问,每次询问从点$v$出发,只经过权值小于等于$x$的边 ...

  7. DICOM医学图像处理:Deconstructed PACS之Orthanc,Modification & Anonymization

    背景: 上篇博文为引子,介绍了一款神奇的开源PACS系统——Orthanc.本篇开始解读官方Cookbook中的相关内容,对于简单的浏览.访问和上传请阅读前篇博文.在常规的PACS系统中还未出现对于D ...

  8. Android GC 原理探究

    导语 想写一篇关于 android GC 的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的 GC 导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和 GC 的原理,为 ...

  9. 记事本中写c/c++程序在Windows下运行

     1.在桌面新建一个1.c,内容例如以下: 2.打开cmd命令行窗体,进入CodeBlock安装文件夹下的:E:\Installed\CodeBlocks\MinGW.然后运行mingwvars. ...

  10. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database &#39;user&#39;

    1.错误描写叙述 2014-7-12 21:06:05 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager 信息: ...