题目链接:点击打开题目
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11144 Accepted Submission(s): 3942
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 2137 2134 2132
用素数筛时标记序号。
代码如下:
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
#define MAX 1000000
int pos[MAX+11];
int ant = 1;
int main()
{
for (int i = 2 ; i <= MAX ; i++)
{
if (!pos[i])
{
pos[i] = ant;
for (int j = i + i ; j <= MAX ; j += i)
pos[j] = ant;
ant++;
}
}
int n;
while (~scanf ("%d",&n))
printf ("%d\n",pos[n]);
}