C语言编写一个数如果恰好等于它的因子之和,这个数就称为“完数”。如:6的因子为1,2,3,而6=1+2+3,所以6是完数。编程找出1000内的所有完数,并按下列格式输出其因子: 6的因子是:1,2,3
时间: 2024-12-02 19:27:48 浏览: 97
在C语言中,我们可以编写一个程序来查找并输出1000以内的所有完数。首先,我们需要定义一个函数来计算给定数的所有因子,接着遍历1到1000之间的每个数,判断它们是否是完数。以下是相应的代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool areFactorsSummingToNum(int num) {
int sum = 0, i = 1;
// 计算因子之和
while (i * i <= num) {
if (num % i == 0) {
if (i * i == num)
sum = i; // 如果因子是完全平方数,只计入一次
else {
sum += i; // 正常因子计入
if (i != num / i) // 如果不是完全平方数,还有另一个因子
sum += num / i;
}
}
i++;
}
// 检查因子之和是否等于原数
return sum == num;
}
void printFactorsAndCheckPerfectNumber(int num) {
printf("%d的因子是:", num);
for (int i = 1; i <= num; i++) {
if (num % i == 0)
printf("%d, ", i);
}
if (areFactorsSummingToNum(num))
printf("\n它是完美数。\n");
else
printf("\n\n"); // 不是完美数,空行隔开
}
int main() {
int limit = 1000;
// 查找并输出1000以内的完美数
for (int i = 1; i <= limit; i++) {
if (areFactorsSummingToNum(i)) {
printFactorsAndCheckPerfectNumber(i);
}
}
return 0;
}
```
这个程序会输出1000以内所有符合条件的完数及其因子。
阅读全文
相关推荐


















