HDU 2136 Largest prime factor

来源:互联网 发布:chemdraw mac 编辑:程序博客网 时间:2024/04/26 05:12

求一个数的最大质因子,一开始把素数筛出来,然后从大到小试,超时,其实在筛素数的时候可以把每个数的素因子确定下来,这样之后只要O(1)就可以了。注意筛素数时,不能到最大范围的平方根就结束,这样是找不出最大的来的。

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int a[1000002];void prime(int n){    int i,j,cnt=1;    for(i=2; i<=n; i++)    {        if(a[i])            continue;        for(j=1; i*j<=n; j++)            a[i*j]=cnt;        cnt++;    }}int main(void){    memset(a,0,sizeof(a));    prime(1000000);    int n;    while(scanf("%d",&n)!=EOF)    {        printf("%d\n",a[n]);    }    return 0;}


 

原创粉丝点击