poj 1730Perfect 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 powerif, 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
Output
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(分解质因数)的更多相关文章
- UVa 10622 (gcd 分解质因数) Perfect P-th Powers
题意: 对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值. 分析: 将x分解质因数,然后求所有指数的gcd即可. 对于负数还要再处理一下,负数求得的p必须是奇数才行. #inclu ...
- POJ 1142:Smith Numbers(分解质因数)
Smith Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submiss ...
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- POJ1811(SummerTrainingDay04-G miller-rabin判断素性 && pollard-rho分解质因数)
Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 35528 Accepted: 9479 Case ...
- java分解质因数
package test; import java.util.Scanner; public class Test19 { /** * 分析:对n进行分解质因数,应先找到一个最小的质数k * 最小 ...
- 程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)
1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...
- 【python】将一个正整数分解质因数
def reduceNum(n): '''题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5''' print '{} = '.format(n), : print 'Pleas ...
- light oj 1236 分解质因数
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/H 题意:求满足1<=i<=j<=n ...
- 【基础数学】质数,约数,分解质因数,GCD,LCM
1.质数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. 2.约数: 如 ...
随机推荐
- Wmap5 测试80端口 Your port 80 is actually used by :Server: Microsoft-HTTPAPI/2.0
问题:win7系统! 在wamp5的apache启动不了: 目录下点击[测试80端口]的时候提示:Your port 80 is actually used by : Server: Microsof ...
- Java-二叉树-插入、删除、遍历
二叉树的具体特性和细节知识点,自行百度,直接上代码. 节点:节点内容.左子孩子.右子孩子.父亲 class Node { private int data; private Node leftChil ...
- 如果你的css文件这么分类,可维护性大大增强!--摘抄
按照css的性质和用途,我们可以将css文件分成: 公共型样式 特殊型样式 皮肤型样式 并以此为顺序引用. 那么他们分别是什么呢? 公共型样式是最为重要的部分,对于比较小的项目,我们只引入一个css, ...
- 【Visual Studio】error: /ZI”和“/Gy-”命令行选项不兼容(转)
原文转自 http://bbs.100home.net/view/4206.html [问题说明]vc6项目用vs2015打开时遇到的错误 [解决方法]项目属性->c/c++->常规-&g ...
- 标准C程序设计七---52
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- C 语言 文件读写
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之.一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:type ...
- CAR_TUNE_VALUE 校準
CAR_TUNE_VALUE 是用來校準 流過電池上的電流 與 系統偵測到的電流 的一致性, 假電 若您是使用假電, 請拔除零件, 僅留下必要元件,如thermal電阻,ID 電阻, 減少量測 fue ...
- yii使用bootstrap分页样式
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...
- 猴子都能懂的git教程链接
http://backlogtool.com/git-guide/cn/intro/intro1_1.html
- tcp异常断开的重连解决方法
1.select超时重连 http://bbs.chinaunix.net/thread-4162149-1-1.html 2.http://bbs.csdn.net/topics/350074818 ...