Largest prime factor
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17782 Accepted Submission(s): 6178
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
思路
1)从小到大遍历数据范围内的所有数。把包含质因子的数的位置都设成跟质因子的位置相同。
2)同一个数的位置可能被多次复写。但是由于是从小到大遍历,这就保证了最后一次写入的是该数的最大质因子的位置
AC Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6+5;
int cnt;
int tab[maxn];
void init(){
tab[++cnt] = 0;
for(int i=2;i<maxn;i++){
if(!tab[i]){
for(int j=1;j*i<maxn;j++){
tab[i*j] = cnt;
}
cnt++;
}
}
}
int main() {
int n;
init();
while(~scanf("%d",&n)){
printf("%d\n",tab[n]);
}
return 0;
}
本文介绍了一种高效算法,用于确定任意整数最大质因数的位置。通过遍历并标记每个数的最大质因数,可以快速查询任意给定数的最大质因数位置。此算法在处理大量数据时表现优异。

3463

被折叠的 条评论
为什么被折叠?



