【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
2014-09-30 21:49
399 查看
Largest prime factor
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6990 Accepted Submission(s): 2471
Problem Description
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.
Input
Each line will contain one integer n(0 < n < 1000000).
Output
Output the LPF(n).
Sample Input
1 2 3 4 5
Sample Output
0 1 2 1 3
Author
Wiskey
Source
HDU 2007-11 Programming Contest_WarmUp
Recommend
威士忌 | We have carefully selected several similar problems for you: 2133 2135 1215 2137 2134
我的思路 先打了素数表 再用二分查找去找最大的素数。。结果果断TLE了
代码在此:
#include<stdio.h> int YNprime[1000001]; int prime[200000]; int totprime=1; int getprime(int maxN) { int i,j,k; for(i=2;i<=maxN;i++) if(YNprime[i]==0) { prime[totprime++]=i; for(j=2;i*j<=maxN;j++) YNprime[i*j]=1; } return 1; } int find(int s,int t,int N) { int i; int m=(s+t)/2; if(s==t) return s; if(prime[m]>N) return find(s,m,N); if(prime[m]<N) return find(m+1,t,N); else return m; } int main() { freopen("a.in","r",stdin); freopen("a.out","w",stdout); int n,i,ans,k; getprime(1000000); while(scanf("%d",&n)!=EOF) { ans=0; if(n==1) {printf("0\n");continue;} k=find(1,totprime-1,n); for(i=k+10;i>=1;i--) if(n%prime[i]==0) {ans=i;break;} printf("%d\n",ans); } return 0; }结果发现沙茶了
筛选法的时候就能直接找最大的素数
#include <cstdio> #include <iostream> using namespace std; #define Maxl 1000005 int prime[Maxl]; int rank[Maxl]; int main() { int k = 0, i, j; for (i =2; i < Maxl; i++) { if (prime[i] == 0) { rank[i] = ++k; for (j = i; j < Maxl; j += i) { prime[j] = i; } } } prime[1] = 0; int n; while(scanf("%d", &n) == 1) { if(n == 1) { printf("0\n"); continue; } int k = prime ; printf("%d\n", rank[k]); } }
相关文章推荐
- 【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
- HDU2136 Largest prime factor 筛选法求素数位置
- hdu oj 2136 Largest prime factor 和 nyoj 520 最大素因子 【筛选法】
- The largest prime factor(最大质因数)
- hdu2136 Largest prime factor(C语言)
- hdu2136 Largest prime factor
- [暑假集训--数论]hdu2136 Largest prime factor
- hdu2136 Largest prime factor
- (hdu step 2.1.3)Largest prime factor(求一个数的最大质因子的位置)
- HDU Largest prime factor && nyoj 520 最大素因子【素数】
- HDU 2136 Largest prime factor(最大素因子)
- HDU 2136 Largest prime factor【素数筛选法】
- HDU 2136 Largest prime factor (筛选法求素数)
- 欧拉计划---0003 Largest prime factor(找出一个合数的最大质数因子)
- Largest prime factor(最大素数因子)
- HDU 2136 Largest prime factor(素数筛选+打表)
- 【HDU2136】 Largest prime factor
- PE3 Largest prime factor(最大素数因子)
- HDU2136 Largest prime factor【水题】
- 【HDU2136】 Largest prime factor