C语言求1000以内的所有完全数
时间: 2024-12-13 11:20:27 浏览: 5
在C语言中,一个完全数是指它的所有真因数(除了自身外的正因子)之和恰好等于它本身的数。为了找出1000以内的所有完全数,我们可以创建一个函数,遍历每个数,检查其真因数之和是否等于本身。下面是基本的算法:
1. 定义一个函数`isPerfectNumber()`,接受一个整数参数`num`,检查它是否为完全数。
2. 初始化两个变量`divisor`和`sieve`,`divisor`用于遍历除数,从2到sqrt(num),`sieve`用于记录`num`的真因数之和。
3. 遍历`divisor`,如果`num`能被`divisor`整除,那么将`divisor`和`num`除以`divisor`的结果都加入`sieve`中。
4. 因为1也是每个数的因子,所以在`sieve`中再加上1。
5. 检查`sieve`是否等于`num`,如果是,返回`true`;否则,返回`false`。
6. 主程序中,遍历1到1000之间的每个数,如果发现是完全数,打印出来。
以下是一个简单的C语言代码片段:
```c
#include <stdio.h>
#include <math.h>
// Function to check if a number is perfect
int isPerfectNumber(int num) {
if (num <= 1) return 0;
int divisor = 2, sieve = 1;
while (divisor * divisor <= num) {
if (num % divisor == 0) {
sieve += divisor;
if (divisor != num / divisor) {
sieve += num / divisor;
}
}
divisor++;
}
return sieve == num ? 1 : 0;
}
int main() {
int i;
printf("Perfect numbers up to 1000:\n");
for (i = 1; i <= 1000; i++) {
if (isPerfectNumber(i)) {
printf("%d ", i);
}
}
printf("\n");
阅读全文