任务描述:
本关任务:编写一个能判断完数的函数,并编写主程序调用该函数,使得键盘输入一个数x,则输出1~x之间的所有完数。
相关知识:
完数,完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
测试输入:31
预期输出:6 28
#include<stdio.h>
//judgePerfect函数用于判断参数data是否是完数,返回值1表示是,0表示不是
int judgePerfect(int data) {
int i,result=0,sum=0;
for(i=1; i<data; i++) {
if(data%i==0) {
sum+=i;
}
}
if(sum==data) {
result=1;
}
return result;
}
int main(void) {
//编写主函数调用judgePerfect函数,输出1~x之间的所有完数,两个数字之间用空格隔开
int i,x,result;
scanf("%d",&x);
for(i=1; i<=x; i++) {
if(judgePerfect(i)==1) {
printf("%d ",i);
}
}
return 0;
}
运行结果如下: