求大佬帮忙解答c语言的题目!
											①求1到n以内(包括n,n<1000)所有的完全数。n由键盘输入(每个数后面带一个空格)要求:(1)编写如下接口的功能函数:int fun(int n),该函数的功能是判断n是不是完全数。若是,返回1,若不是返回0。
(2)main函数去调用该功能函数。
完全数定义:该数的所有因子之和为该数的两倍。如6的因子是1,2,3,6。6*2=1+2+3+6.所以6是完全数
样例:
输入
30
输出
6 28
程序代码:#include <stdio.h>
#include <stdbool.h>
bool is_perfect_umber( unsigned v )
{
    unsigned sum = 0;
    for( unsigned i=1; i<v; ++i )
        if( v%i == 0 )
            sum += i;
    return sum == v;
}
int main( void )
{
    unsigned n;
    scanf( "%u", &n );
    for( unsigned i=1; i<=n; ++i )
        if( is_perfect_umber(i) )
            printf( "%u ", i );
}
程序代码:#include <stdio.h>
int main( void )
{
    unsigned n;
    scanf( "%u", &n );
    printf( "%.*s", (n>=6)*2+(n>=28)*3+(n>=496)*4, "6 28 496 " );
}