您的位置:首页 > 其它

【HDU】 2136 Largest prime factor

2016-07-05 15:34 417 查看

Largest prime factor

题目链接

Largest prime factor

题目大意

求一个数最大质因子是第几个素数。

题解

类似打表的方法求出每个数最大因子。最后2分找就行了。

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

int n,p[1000005],h,f[1000005];
bool vis[1000005];

void setup()
{
h=0;
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
memset(p,0,sizeof(p));
p[h++]=2; f[2]=2;
for (int i=4;i<=1000000;i+=2)
{
vis[i]=1;
f[i]=2;
}
for (int i=3;i<=1000000;i+=2) if (!vis[i])
{
p[h++]=i;
for (int j=i;j<=1000000;j+=i)
{
vis[j]=1;
f[j]=i;
}
}
}

int bserch(int k)
{
int l=0,r=h-1,mid;
while (l!=r)
{
mid=(l+r)>>1;
if (k<=p[mid]) r=mid;
else l=mid+1;
}
return l;
}

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