用c语眼求正整数n之内的所有完数及其因子
时间: 2024-02-12 16:06:00 浏览: 57
好的,以下是用 C 语言编写的程序,可以找出正整数 n 以内的所有完数及其因子:
```c
#include <stdio.h>
int main()
{
int n, i, j, sum;
printf("请输入一个正整数 n:");
scanf("%d", &n);
printf("1到%d之间的完数及其因子有:\n", n);
for (i = 1; i <= n; i++)
{
sum = 0;
printf("%d的因子有:", i);
for (j = 1; j <= i / 2; j++)
{
if (i % j == 0)
{
sum += j;
printf("%d ", j);
}
}
printf("\n");
if (sum == i)
{
printf("%d是一个完数\n", i);
}
}
return 0;
}
```
程序中首先会要求你输入一个正整数 n,然后程序会遍历 1 到 n 之间的所有数,对于每个数 i,程序会计算它的因子之和 sum,并输出它的所有因子。如果 sum 等于 i,那么 i 就是一个完数,程序会输出 i 是一个完数的信息。
注意,这个程序的时间复杂度为 O(n^2),当 n 很大时,程序的运行时间会比较长。如果要优化程序的运行时间,可以考虑使用其他算法。
阅读全文