注册 登录
编程论坛 C语言论坛

求大佬帮忙解答c语言的题目!

梦小123 发布于 2021-03-18 15:40, 1942 次点击
①求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
5 回复
#2
rjsp2021-03-18 16:21
仅供参考

程序代码:
#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 " );
}
#3
梦小1232021-03-18 18:13
回复 2楼 rjsp
您好,这好像没用到int fun(int n)函数呀
#4
apull2021-03-18 20:56
bool is_perfect_umber( unsigned v ) 对应的就是你的fun
#5
梦小1232021-03-19 10:50
回复 4楼 apull
噢噢,谢了
#6
梦小1232021-03-19 10:50
回复 2楼 rjsp
谢谢!
1