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;
}
浙公网安备 33010602011771号