【质因数分解 && n = x^p求最大p】LightOJ - 1220 Mysterious Bacteria
2017-10-16 19:48
357 查看
Problem Description
输入n,n = x^p求最大的p
思路:
算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1^a1*P2^a2*P3^a3……Pn^an,这里P1小于P2小于P3……小于Pn均为质数,其中指数ai是正整数。
n = x^p。最大的p就是gcd(p1, p2, p3, …, pn)。
所以质因数分解后,求最大公约数即可,需要注意的是如果n为负数。那么答案只可能是奇数。所以n变为整数算出最大公约数后,如果是偶数,需要除2,直到为奇数
输入n,n = x^p求最大的p
思路:
算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1^a1*P2^a2*P3^a3……Pn^an,这里P1小于P2小于P3……小于Pn均为质数,其中指数ai是正整数。
n = x^p。最大的p就是gcd(p1, p2, p3, …, pn)。
所以质因数分解后,求最大公约数即可,需要注意的是如果n为负数。那么答案只可能是奇数。所以n变为整数算出最大公约数后,如果是偶数,需要除2,直到为奇数
#include<bits/stdc++.h> using namespace std; #define nn 100005 bool vis[nn]; int prime[nn/10], m; int a[nn], b[nn], t; void get_Prime()//素数筛法 { m = 0; memset(vis, 0, sizeof(vis)); for(long long i = 2; i <= nn - 5; i++) { if(!vis[i]) { prime[m++] = i; for(long long j = 2*i; j <= nn - 5; j = j + i) vis[j] = 1; } } } void factor(long long n)//质因数分解 { int mm = sqrt(n); if(mm * mm > n) mm--; t = 0; for(int i = 0; i < m && prime[i] <= mm; i++) { if(n%prime[i] == 0) { a[t] = prime[i]; b[t] = 0; while(n%prime[i] == 0) { b[t]++; n /= prime[i]; } t++; } } if(n != 1){ a[t] = n; b[t++] = 1; } } int gcd(int x, int y)//求x,y的最大公约数 { if(!y) return x; else return gcd(y, x%y); } int main() { int T, i, Case = 1; long long n; scanf("%d", &T); get_Prime(); while(T--) { scanf("%lld", &n); int flag = 0; if(n < 0) {//如果是负数标记一下,变正 n = -1 * n; flag = 1; } factor(n); int ans = b[0]; for(i = 1; i < t; i++) { ans = gcd(ans, b[i]); } if(flag && ans % 2 == 0) {//n为负数,ans为偶。那么需要变为奇 while(ans%2 == 0) { ans >>= 1; } printf("Case %d: %d\n", Case++, ans); } else printf("Case %d: %d\n", Case++, ans); } }
相关文章推荐
- LightOJ - 1220(n=b^k时最大的k,GCD)
- LightOJ -1029--Civil and Evil Engineer(最小生成树&&最大生成树)
- Lightoj-1356 Prime Independence(质因子分解&&二分图最大独立集)
- LightOJ 1356 Prime Independence(质因数分解+最大独立集+Hopcroft-Carp)
- LightOJ - 1356 质因数分解+最大独立子集
- Lightoj 1153--Internet Bandwidth【最大流 && 无向图】
- LightOJ 1220 Mysterious Bacteria(满足a^p = n的最大p)
- LightOj 1220 - Mysterious Bacteria (分解质因子x=b^p 中的 x 求最大的 p)
- 【基本算术定理 && 质因数分解】LightOJ - 1341 Aladdin and the Flying Carpet
- ACM最大值最小化&&二分法
- zoj 2027 Travelling Fee 求a->b的最少花费(去除路上的最大花费后的费用)
- 【Unity&NGUI】背包单格中最大数量怎么设置
- 最大流 & 二分匹配模板
- hdu 1532&&poj1273 基础最大流
- hdoj_1231&&hdoj_1003最大连续子序列
- HDU 4240 --Route Redundancy【最大流dinic && DFS】
- LightOJ - 1220 Mysterious Bacteria ( 唯一分解定理
- NBUT 1181 Big Mouth of Abyss - Kog'Maw(删k位留最大最小数)
- HDU 3934 Summer holiday & Poj 2079 Triangle(凸包最大内接三角形)
- 洛谷 P1967 货车运输(Kruskal最大生成树&&倍增lca)