HDU 2136 素数打表+求质数因子
2015-11-26 23:53
232 查看
Largest prime factor
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8976 Accepted Submission(s): 3191[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
题意:求一个数的最大质数因子在素数表中的位置
素数打表+求质因子
#include<bits/stdc++.h> using namespace std; int n; bool visit[1000005]; int prime[1000005]; map<int,int>mp; int len; int que[10]; void init_prim() { memset(visit, true, sizeof(visit)); int num = 0; for (int i = 2; i <= 1000000; ++i) { for(int j=i+i;j<=1000000;j=j+i) visit[j]=false; } for(int i=2;i<=1000000;i++) if(visit[i]) { prime[++num]=i; mp[i]=num; } } void prime_(int nn) { len=0; for(int i=2;i*i<=nn;i++) { if(nn%i==0) { que[len++]=i; while(nn%i==0) { nn=nn/i; } } } if(nn>1) que[len++]=nn; } int main() { init_prim(); while(scanf("%d",&n)!=EOF) { len=0; memset(que,0,sizeof(que)); if(n==1) printf("0\n"); else { prime_(n); sort(que,que+len); //cout<<len<<endl; printf("%d\n",mp[que[len-1]]); } } return 0; }
相关文章推荐
- tianchi交通
- Daily Scrum - 11/26
- Selenium(webdriver)实战
- 浅谈JavaScript中的字符串操作
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE
- 安装Linux和Windows的双系统
- 点击自己内容显示和隐藏
- 2015第48周四
- MySQL-python 安装出现的问题
- 算法在追MM中的应用
- HDU 3486 Interviewe RMQ
- 森林病虫防治系统 (六)
- svn强制添加注释问题处理
- [ios]AVPlayer 缓冲、 暂停通知和海报帧
- 素数打表
- Android登录实例——布局文件
- 啊Ran讲微信开发(.net) :订阅号+自定义服务器(消息,关注事件)
- UndeclaredThrowableException 详解
- 包的设计
- 16位汇编:文件名长度导致的LINK:Unresolved Externals错误