一个求完全数的程序,真没看出来错哪了,可是运行不对

一个求完全数的程序,真没看出来哪里错了,可是运行不对
#include<iostream>
using namespace std;

bool perfect(int num)
{
int sum=0;
for(int i=1;i<=num/2;i++)//先前错误:for(int i=0;)会引起程序错误。
{
if(num%i==0)
{
sum+=i;
}
}
if(sum==num)
return true;
else
return false;
}

void main()
{
int n;
cin>>n;
if(perfect(n))
cout<<"是完全数"<<endl;
else
cout<<"不是完全数"<<endl;
cout<<"范围内完全数是:";
for(int i=1;i<=n;i++)
{
if(perfect(i));
{
cout<<i<<" ";
}
}
}


运行之后,输出范围内完全数是那里。。 例如n=6,结果就输出了123456.。。 不应该啊。。 实在没看出来那里错了。。求解,谢谢!!

------解决方案--------------------

if(perfect(i));//这里多了个分号

------解决方案--------------------

cout<<"范围内完全数是:";
    for(int i=1;i<=n;i++)
    {
        if(perfect(i));  //这里你多了个;
        {
            cout<<i<<" ";
        }
    }