c语言编程怎么输出完数

时间:2025-01-24 12:28:33 游戏攻略

在C语言中,输出完数可以通过以下几种方法实现:

方法一:使用嵌套循环遍历所有数字并计算因子和

```c

include

int main() {

int i, j, sum;

for (i = 1; i <= 1000; i++) {

sum = 0;

for (j = 1; j <= i / 2; j++) {

if (i % j == 0) {

sum += j;

}

}

if (sum == i) {

printf("%d ", i);

}

}

return 0;

}

```

方法二:定义函数判断完数并输出

```c

include

int isPerfectNumber(int num) {

int sum = 0;

for (int i = 1; i < num; i++) {

if (num % i == 0) {

sum += i;

}

}

return sum == num;

}

int main() {

int num;

printf("请输入一个整数: ");

scanf("%d", &num);

if (isPerfectNumber(num)) {

printf("%d 是完数。\n", num);

} else {

printf("%d 不是完数。\n", num);

}

return 0;

}

```

方法三:优化因子和计算

```c

include

int main() {

int i, j, k, n;

scanf("%d", &n);

for (i = 2; i <= n; i++) {

k = 0;

for (j = 1; j <= i / 2; j++) {

if (i % j == 0) {

k += j;

}

}

if (k == i) {

printf("%d\n", i);

}

}

return 0;

}

```

方法四:输出10000以内的完数

```c

include

int main() {

int n, sum, i;

for (n = 1; n <= 10000; n++) {

sum = 0;

for (i = 1; i <= n / 2; i++) {

if (n % i == 0) {

sum += i;

}

}

if (sum == n) {

printf("%d ", n);

}

}

return 0;

}

```

方法五:使用数组存储因子并输出

```c

include

int main() {

int i, j, n, s;

for (j = 2; j < 1000; j++) {

n = -1;

s = j;

for (i = 1; i < j; i++) {

if ((j % i) == 0) {

n++;

s = s - i;

if (s == 0) {

printf("%d is a perfect number: ", j);

for (int m = 0; m <= n; m++) {

printf("%d,", k[m]);

}

printf("%d\n", k[n]);

}

}

}

}

return 0;

}

```

建议

方法一和方法二是比较基础和常用的方法,适用于输出较小范围内的完数。

方法三是对方法一的优化,减少了内层循环的次数,适用于输出较大范围内的完数,但时间复杂度仍然较高。

方法四适用于输出10000以内的完数,效率较高。

方法五通过数组存储因子,输出格式较为清晰,但代码较为复杂。

根据实际需求选择合适的方法即可。