定义一个函数,来判断一个数是否是完数。一个数如果恰好等于它的因子之和,这个数就称为完数。例如6的因子为1,2,3,而6=1+2+3,因此6是完数。 在主函数中,调用定义的函数,输出1000以内的所有完数
时间: 2024-10-18 20:13:56 浏览: 80
Perfect-Numbers:确定一个正整数是否是一个完美数
5星 · 资源好评率100%
首先,我们需要编写一个函数`isPerfectNumber`来检查一个数是否是完数。然后在主函数`main`中,我们遍历1到1000之间的所有整数,对于每个数,调用`isPerfectNumber`函数并打印出完数。
```c
#include <stdio.h>
// 完数判断函数
int isPerfectNumber(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) { // 只需检查到num的平方根即可,因为因子成对出现
if (num % i == 0) {
// 如果i是因子,则另一个因子就是num/i(不包括i本身)
sum += i;
if (i != num / i) { // 避免重复计算
sum += num / i;
}
}
}
return sum == num; // 如果sum等于num,那么num就是完数
}
int main() {
for (int i = 1; i <= 1000; i++) {
if (isPerfectNumber(i)) {
printf("%d 是完数\n", i);
}
}
return 0;
}
```
在这个程序中,`isPerfectNumber`函数遍历从1到`sqrt(num)`的所有数,检查它们是否能被`num`整除。如果是,就将其加入`sum`,同时还要加上对应的另一因子(即`num`除以当前因子的结果)。如果因子已经包含在内,我们就跳过它。最终,如果`sum`等于`num`,则返回`true`表示它是完数;否则,返回`false`。
运行此程序,将会输出1000以内所有的完数。
阅读全文