感觉数据有点小问题,但是却可以ac ,很郁闷。
解题思路:因为数据不是很大,(n<1000) 所以直接暴力求解即可。
程序:
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,m,temp=0;
memset(a,0,sizeof(a));
a[0]=1;a[1]=1;
for(i=2;i<5000;i++)
{
a[i]=0;
for(j=1;j<=i/2;j++)
if(i%j==0)
a[i]+=j; //把每个数的因子相加 并记录
}
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(i=0;i<=1000;i++)
{
if(m==a[i]) //判断是否存在
{
temp=1;
break;
}
}
if(temp==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}