写C语言程序输出1000以内的水仙花数和完数
时间: 2024-05-13 17:15:00 浏览: 9
水仙花数是指一个三位数的各个位上的数字的立方和等于该数本身,例如 153 = 1³ + 5³ + 3³。完数是指一个数恰好等于其所有因子(不包括它本身)之和的数,例如 6 = 1 + 2 + 3。
以下是输出1000以内的水仙花数和完数的C语言程序:
```c
#include <stdio.h>
int main() {
int num;
int i, j, sum;
// 输出水仙花数
printf("水仙花数:\n");
for (num = 100; num < 1000; num++) {
i = num / 100; // 百位数
j = (num % 100) / 10; // 十位数
sum = i*i*i + j*j*j + (num % 10)*(num % 10)*(num % 10); // 个位数
if (sum == num) {
printf("%d\n", num);
}
}
// 输出完数
printf("完数:\n");
for (num = 2; num < 1000; num++) {
sum = 1; // 因子1必须包含
for (i = 2; i <= num/2; i++) {
if (num % i == 0) {
sum += i;
}
}
if (sum == num) {
printf("%d\n", num);
}
}
return 0;
}
```
输出结果为:
```
水仙花数:
153
370
371
407
完数:
6
28
496
```