HDU2136 Largest prime factor【水题】
2016-07-27 22:19
441 查看
Largest prime factor
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14571 Accepted Submission(s): 5099
[align=left]Problem Description[/align]
Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.
[align=left]Input[/align]
Each line will contain one integer n(0 < n < 1000000).
[align=left]Output[/align]
Output the LPF(n).
[align=left]Sample Input[/align]
1
2
3
4
5
[align=left]Sample Output[/align]
0
1
2
1
3
[align=left]Author[/align]
Wiskey
[align=left]Source[/align]
HDU 2007-11 Programming Contest_WarmUp
问题链接:HDU2136 Largest prime factor。
题意简述:参加上文。
问题分析:
这个问题,对于输入的n,并不是要求输出n的最大公因子的值,而是输出n的最大公因子的素数序号,即LPF(n)。
众所周知,LPF(2)=1,LPF(3)=2,LPF(4)=1,LPF(5)=3,......
程序说明:(略)
题记:
筛选法不仅能够用来计算最小的若干素数,也可以用来求整数的最大公因子。
AC通过的C语言程序如下:
/* HDU2136 Largest prime factor */ #include <stdio.h> #define MAXN 1000000 // 若primefactor[i] = x,则x为i的最大因子(素数)的序号 int primefactor[MAXN+1] = {0, 0}; void maketabel(int n) { int count, i, j; // 对于偶数,令其因子暂时为2,即第1个 for(i=2; i<=n; i+=2) primefactor[i] = 1; // 对于奇数,令其因子暂时为其值 for(i=3; i<=n; i+=2) primefactor[i] = i; // 对于素数i,设置j=k*i的暂时因子为i,有更大因子则会被逐步更新 count = 1; for(i=3; i<=n; i+=2) if(i == primefactor[i]) { count++; primefactor[i] = count; for(j=2*i; j<=n; j+=i) primefactor[j] = count; } } int main(void) { int n; maketabel(MAXN); while(scanf("%d", &n) != EOF) printf("%d\n", primefactor ); return 0; }
相关文章推荐
- hive中的时间函数具体应用
- 基于协同过滤的推荐方法
- 可重入函数与线程安全
- HDU1257
- 基于协同过滤的推荐方法
- poj 2299 Ultra-QuickSort
- python gensim 快速模块安装方法
- jnekins搭建CI服务for xcode
- DAY 1 总结
- JAVA解析JSON数据转化为Map对象
- Linux下如何获取帮助 - man、info等命令
- BD___C++中数组和指针的区别
- java序列化和反序列化及static
- iOS--Masonry解决 tableViewCell 重用时约束冲突
- Java正则表达式Pattern.quote()方法详解
- 嵌入式之SD设置
- MVC和WEBFORM的比较
- Represent code in math equations
- Mac终端操作SVN指令
- 提升Android Studio的Gradle构建速度