hdu 1999 不可摸数(素数筛法求因子和)

#include <stdio.h>

 

#define MAXN 500001 //这题数据求到这里就可以了
#define MAXQ 1001

bool flag[MAXN];
int sum[MAXN];
void init()
{
    int i,j;
    for(i=1; i<=MAXN/2; i++)
    {
        for(j=i+i; j<MAXN; j+=i)
        {
            sum[j]+=i;
        }
    }
    for(i=0; i<MAXN; i++)
    {
        if(sum[i]<MAXQ) flag[sum[i]]=true;
    }
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("tdata.txt","r",stdin);
#endif
    init();
    int T,n;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        if(!flag[n]) printf("yes\n");
        else printf("no\n");
    }
    return 0;
}

posted @ 2010-09-11 09:28  菜到不得鸟  阅读(266)  评论(0)    收藏  举报