求大佬帮忙解答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 " ); }