您的位置:首页 > 其它

HDU 2136 Largest prime factor(筛选法)

2012-08-24 21:05 330 查看

Largest prime factor

Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4026 Accepted Submission(s): 1415


[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

[align=left]Recommend[/align]
威士忌

分析:用筛选法(分解素数技巧),求N的最大素数因子在素数表的位置

#include<iostream>
using namespace std;
int a[1000000];
int main()
{
int k=1;//k初始化为1,位置
memset(a,0,sizeof(a));
/*筛选位置*/
for(int i=2;i<1000000;i++)//要到N,而不是sqrt(N)
{
if(!a[i])
{
a[i]=k;//素数i的位置
for(int j=i+i;j<1000000;j+=i)
a[j]=k;    //构造出j的暂时最大素数因子的位置
k++;
}
}
int n;
while(~scanf("%d",&n))
{
printf("%d\n",a
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: