C语言实现当一个数所有的真因子(即除了自身以外的约数)的和,恰好等于它本身,则称该数为“完全数”。例如第一个完全数是6 = 1 + 2 + 3,第二个完全数是28 = 1 + 2 + 4 + 7 + 14。编写程序,统计10000以内的完全数个数。
时间: 2024-12-12 10:17:40 浏览: 11
水仙花数,也称为阿姆斯特朗数,是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(C语言源代码)
在C语言中,我们可以创建一个函数来检查一个数是否是完全数,并使用循环遍历1到10000之间的所有整数。以下是实现这个功能的一种简单方法:
```c
#include <stdio.h>
// 函数定义:判断一个数是否是完全数
int isPerfectNumber(int num) {
int sum = 1; // 初始化和为1,因为1总是数的一个因子
for (int i = 2; i * i <= num; i++) { // 只需要检查到num的平方根即可,提高效率
if (num % i == 0) {
// 如果i是因子,那么它的双倍也是因子
if (i != num / i)
sum += i + num / i;
else
sum += i; // 如果i等于num/i,那就是num本身的因子
}
}
return sum == num; // 返回sum是否等于num,如果相等就是完全数
}
int main() {
int perfectCount = 0;
for (int i = 1; i <= 10000; i++) {
if (isPerfectNumber(i))
perfectCount++;
}
printf("10000以内的完全数有 %d 个。\n", perfectCount);
return 0;
}
```
在这个程序中,`isPerfectNumber`函数用于检测数字是否完美,主函数则通过计数器`perfectCount`统计10000以内有多少个完全数。
阅读全文