```c
#include <stdio.h>
int main() {
int n, i, j, sum
printf("请输入一个正整数n:")
scanf("%d", &n)
for (i = 1i <= n++i) {
sum = 0
for (j = 1j <= i / 2++j) {
if (i % j == 0) {
sum += j
}
}
if (sum == i) {
printf("%d\n", i)
}
}
return 0
}
```
解释如下:
1. 首先,定义变量n、i、j和sum。
2. 要求用户输入n。
4. 内部循环计算数字i的所有真因子之和。
5. 如果该总和等于数字i本身,则输出该数字,即它是一个完全数。
6. 最后返回0结束程序。
注意,此代码中包含了一个优化,即内部循环只需要遍历1到i的一半,因为大于i的一半的因子已经在之前被计算过了。
改好了,看注释#include<stdio.h>
int main ()
{
int a = 1, i = 1, b = 0
while (a <= 1000)
{
while (i <a) //不应该包括a本身
{
if (a % i == 0)
b += i//多了++
i++
}
if (b == a)
{
printf ("%d its factors are ", a)
i = 1
while (i <a) //不应该包括a本身
{
if (a % i == 0)
printf ("%d,", i) //斜杠是干什么用的?多了++
i++
}
printf("\n")//加个换行
}
a++
b = 0
i = 1
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)