请大家帮忙看看!该怎么处理

请大家帮忙看看!
#include "stdio.h"
void main()
{
int a,i;
int sum=0;
for(i=2;i<1000;i++)
{
 for(a=1;a<i;a++)
if((i%a)==0)sum=sum+a;

  if(sum==i);
  {
  printf("%d ",i);
  for(a=1;a<i;a++)
  if(i%a==0)
  printf("%d ",a);
  printf("\n");
  }
  }
  }

求1000以内的完数,运行出来几乎把每个数都输出了,不知道错在哪里!
请大家帮我看看!

------解决方案--------------------
C/C++ code
int main()
{
    int a,i;
    int sum=0;
    for(i=2;i<1000;i++)
    {
        sum = 0;
        for(a=1;a<i;a++)
            if((i%a)==0)
                sum=sum+a;

        if(sum==i)
        {
            printf("%d ",i);
            for(a=1;a<i;a++)
                if(i%a==0)
                    printf("%d ",a);
            printf("\n");
        }
    }
    system("PAUSE");
    return 0;
}

------解决方案--------------------
#include "stdio.h"
void main()
{
int a,i;
int sum;
for(i=2;i < 1000;i++)
{
sum = 0; //对每一个i都要将sum置0
for(a = 1; a < i; a++)
{
if((i % a) == 0)
sum = sum + a;
}
if(sum == i) //这里不要分号
{
printf("%d ",i);
for(a=1;a<i;a++)
if(i%a==0)
printf("%d ",a);
printf("\n");
}
}
}