帮你注解了
#include <stdio.h>
int main()
{
int m, s, i;
for (m = 2; m < 1000; m++) // 对1000以内的每个数(除1外,因为1不是完数)
{
s = 0; // s用来累计当前m的因子之和
for (i = 1; i < m; i++) // 对区间[1,m)内的每个数i
if ((m % i) == 0) // 如果m能被i整除,则i是m的一个因子
s = s + i; // 累加该因子
if (s == m) // 如果所有因子之和s等于当前数m,则m是完数
{
printf("%d, its factors are ", m); // 输出m
for (int i = 1; i < m; i++) // 打印m的所有因子
if (m % i == 0)
printf("%d ", i);
printf("\n");
}
}
}
#include<stdio.h> %标准输入输出头文件
int main() % 声明主函数
{
int m, s, i; % 定义三个整型变量
for (m=2; m<100; m++) % 做一个从2到100的循环,注意这里实际是99,因为m=100的时候,不满足条件会跳出循环
{
s = 0; % 给s赋值,0
for (i=1; i<m; i++) % 做一个从1到m-1的循环
if ((m%i)==0) s=s+1; % 判断m是否会被i整除,如果整除,则将s+1(个人认为这里应该是加i)
if (s==m) % 判断s与m是否相等,如果相等执行下面的命令
{
printf("%d, its factors are ", m); % 输出完数
for (i=1; i<m; i++) % 做一个从1到m-1的循环
if (m%i==0) printf("%d ", i); % 输出所有能被m整除的整数
printf("\n"); %输出换行
}
}
}
如果有帮助,请采纳,多谢!