打印出来只有空行
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 2;
int m = 1;
int sum = 0;
for (; i <= 1000; i++)
{
for (; m < i; m++)
{
if ((i % m) == 0)
{
sum += m;
}
}
if (sum == i)
{
printf("%d its factors are ", m);
for (; m < i; m++)
{
if ((i % m) == 0)
{
printf(" %d ", i);
}
}
printf("\n");
}
}
return 0;
输出正确答案
每次循环开始前 sum 没有初始化,执行完这一段后的 m 的值没有初始化,改正后的代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 2;
int m = 1;
int sum = 0;
for (; i <= 1000; i++)
{
sum = 0;
for (; m < i; m++)
{
if ((i % m) == 0)
{
sum += m;
}
}
m = 1;
if (sum == i)
{
printf("%d its factors are ", sum);
for (; m < i; m++)
{
if ((i % m) == 0)
{
printf(" %d ", m);
}
}
printf("\n");
}
}
return 0;
}
如有用请采纳
#include<stdio.h>
int main( )
{
int i,j;
for(i=1;i<=1000;i++)
{
int sum=0;
for(j=1;j<i;j++)
{
if (i%j==0) sum+=j;
}
if (sum==i) printf("%d\n",i);
}
return 0;
}