c语言一个数如果恰好等于它的因子之和(除自身外),则称该数位完全数。例如:6=1+2+3,6为完全数。 输入描述输入n �输出描述计算1-n �之间有多少个完全数,每行显示一个完全数
时间: 2024-10-15 15:12:02 浏览: 54
c语言经典习题100例.docx
在 C 语言中,判断一个数是否为完全数通常需要遍历从 1 到其平方根的所有因子,并检查它们之和是否等于这个数本身。以下是简单的步骤:
1. 定义一个函数 `isPerfectNumber` 来检查给定的整数 n 是否为完全数。
2. 初始化一个变量 sum 为 0,用于存储因子之和。
3. 遍历从 1 到 sqrt(n) 的所有整数 i,如果 n 能够被 i 整除,那么将 i 和 n/i(取整数部分)都加到 sum 上。
4. 如果 sum 等于 n 且 n 不等于 1(因为 1 也是一个因子),说明 n 是完全数,返回 true 或打印出 n。
5. 返回遍历结束后,累计的完全数的数量。
下面是一个简单的 C 代码示例实现这一功能:
```c
#include <stdio.h>
#include <math.h>
int isPerfectNumber(int num) {
int sum = 1;
for (int i = 2; i <= sqrt(num); ++i) {
if (num % i == 0) {
sum += i;
if (i != num / i) { // 不考虑重复因子
sum += num / i;
}
}
}
return sum == num && num != 1;
}
int main() {
int n, count = 0;
printf("Enter the upper limit: ");
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
if (isPerfectNumber(i)) {
printf("%d is a perfect number.\n", i);
count++;
}
}
printf("There are %d perfect numbers between 1 and %d.\n", count, n);
return 0;
}
```
阅读全文