BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
2014-11-22 21:59
471 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5108
题目意思:给出一个数正整数 N,N <= 1e9,现在需要找出一个最少的正整数 M,使得 N/M 是素数。如果找不到就输出0.
一开始有想过将所有 <= 1e9 的素数求出来的,不过绝对超时就放弃了;然后就开始从题目中挖掘简便的处理方法。受到求素数的方法启发,枚举的因子 i 如果在 i * i <= N 之内都没有找到符合条件的素数,那么那些 > N 的因子就更不可能了。于是时间复杂度就降了下来。接着是排除那些 N 除不尽的因子,即 N % i != 0。剩下的就是那些能除得尽的因子,枚举 N / i 和 N / (N/i),较小的那个先保存下来,直到枚举完所有因子,最少的那个就是答案。
wa了3次......
第一次是遗漏:如果 N/i 是 N 的因子,那么 N/(N/i) 也是 N 的因子。
第二次是错误地认为:如果从小到大枚举因子,那么第一次遇到的就是所求的最少正整数 M。举个例子就知道错了。例如 12,答案为3。如果这样想,求出来的结果会是6,因为如果按从小到大的顺序枚举,当遇到 2 的时候,因子分别是 2 和6,而12/6 = 2 是素数。
第三次就是保存结果的时候只保存 N/(N/i)较小的,脑一定是注水了 = =,i 也是需要的 !!
View Code
题目意思:给出一个数正整数 N,N <= 1e9,现在需要找出一个最少的正整数 M,使得 N/M 是素数。如果找不到就输出0.
一开始有想过将所有 <= 1e9 的素数求出来的,不过绝对超时就放弃了;然后就开始从题目中挖掘简便的处理方法。受到求素数的方法启发,枚举的因子 i 如果在 i * i <= N 之内都没有找到符合条件的素数,那么那些 > N 的因子就更不可能了。于是时间复杂度就降了下来。接着是排除那些 N 除不尽的因子,即 N % i != 0。剩下的就是那些能除得尽的因子,枚举 N / i 和 N / (N/i),较小的那个先保存下来,直到枚举完所有因子,最少的那个就是答案。
wa了3次......
第一次是遗漏:如果 N/i 是 N 的因子,那么 N/(N/i) 也是 N 的因子。
第二次是错误地认为:如果从小到大枚举因子,那么第一次遇到的就是所求的最少正整数 M。举个例子就知道错了。例如 12,答案为3。如果这样想,求出来的结果会是6,因为如果按从小到大的顺序枚举,当遇到 2 的时候,因子分别是 2 和6,而12/6 = 2 是素数。
第三次就是保存结果的时候只保存 N/(N/i)较小的,脑一定是注水了 = =,i 也是需要的 !!
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; bool is_prime(int x) { if (x == 1) return false; if (x == 2) return true; for (int i = 2; i * i <= x; i++) { if (x % i == 0) return false; } return true; } int main() { int n; while (scanf("%d", &n) != EOF) { int ans = 0; for (int i = 1; i * i <= n; i++) { if (n % i) continue; if (is_prime(n/i)) ans = (ans != 0 ? min(ans, i) : i); if (is_prime(n/(n/i))) ans = (ans != 0 ? min(ans, n/i) : n/i); } printf("%d\n", ans); } return 0; }
View Code
相关文章推荐
- HDU 5108Alexandra and Prime Numbers(大素数)
- hdu5108——Alexandra and Prime Numbers(素数)
- hdu 5108 Alexandra and Prime Numbers(素数)
- BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
- BestCoder17 1001.Chessboard(hdu 5100) 解题报告
- hdu 5108——Alexandra and Prime Numbers
- HDU-#5108 Alexandra and Prime Numbers
- hdu 5108 Alexandra and Prime Numbers (水题,暴力)
- HDU 5108 Alexandra and Prime Numbers
- hdu 5108 Alexandra and Prime Numbers
- HDU 5108 Alexandra and Prime Numbers
- hdu 5108 Alexandra and Prime Numbers(水题 / 数论)
- HDU-5108-Alexandra and Prime Numbers
- BestCoder7 1002 Little Pony and Alohomora Part I(hdu 4986) 解题报告
- hdu 5108 Alexandra and Prime Numbers
- 【数论】hdu-5108-Alexandra and Prime Numbers(求最大质因数) (BestCoder Round #19)
- BestCoder3 1001 Task schedule(hdu 4907) 解题报告
- BestCoder10 1001 Revenge of Fibonacci(hdu 5018) 解题报告
- BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
- BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告