编写一个函数,判断一个数是否是完数(因子之和等于该数本身,例如6的因子是1,2,3,1+2+3=6,因此6是完数),并编写一个简单的程序测试该函数的正确性。c语言
时间: 2024-02-24 20:53:10 浏览: 81
C语言程序设计-编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0;调用该函数找出10
5星 · 资源好评率100%
可以使用以下的函数来判断一个数是否是完数:
```c
#include <stdio.h>
// 判断一个数是否是完数
int is_perfect_num(int num)
{
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
// 测试函数
int main()
{
printf("6: %s\n", is_perfect_num(6) ? "是完数" : "不是完数");
printf("8: %s\n", is_perfect_num(8) ? "是完数" : "不是完数");
printf("28: %s\n", is_perfect_num(28) ? "是完数" : "不是完数");
printf("496: %s\n", is_perfect_num(496) ? "是完数" : "不是完数");
printf("8128: %s\n", is_perfect_num(8128) ? "是完数" : "不是完数");
return 0;
}
```
这个函数首先定义了一个变量sum来存储num的因子之和,然后使用for循环遍历1到num-1之间的每一个数,如果它是num的因子,就把它加到sum中。最后,如果sum等于num,就返回真(即num是完数),否则返回假(即num不是完数)。
在测试函数中,我们分别测试了6、8、28、496和8128这几个数是否是完数,输出相应的结果。如果函数实现正确,输出结果应该是:
```
6: 是完数
8: 不是完数
28: 是完数
496: 是完数
8128: 是完数
```
阅读全文