您的位置:首页 > 其它

HDU 2136 Largest prime factor(素数筛法)

2017-03-15 18:26 344 查看

Largest prime factor

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 12087    Accepted Submission(s): 4290


[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

题意:每一个素数都对应一个序号,比如说1对应0,2对应1,3对应2,5对应3,;现在给你一个数n,要你找出最大质因数对应的序号。

思路:素数筛法求解;先用素数筛法打表,对每一个素数,把它以及它的倍数都标上序号,当输入n时,直接打印即可。

AC代码:

#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1e6+5;
int save[maxn];
int main(){
memset(save,0,sizeof(save));
int cnt=1;
save[1]=0;
for(int i=2;i<maxn;i++){
if(!save[i]){
for(int j=i;j<maxn;j+=i)
save[j]=cnt;

cnt++;
}
}

int n;
while(scanf("%d",&n)==1){
printf("%d\n",save
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: