帮忙看看
#include <stdio.h>int main()
{
int m,n,s;
for (m=2;m<1000;m++)
{
s=0;
for(n=1;n<=m;n++)
if(m%n==0)
s+=n;
if(s==m) printf("%d",m);
}
return 0;
}
题目是求出1~1000的自然数中的所有完数(因子和等于该数本身的数),如6=1+2+3
请问我的程序错在哪里啊,为什么没有输出呢? 你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次,你的程序没有正确计算完数,因为你的循环条件和条件判断有误。以下是你需要修改的程序:
#include <stdio.h>
int main()
{
int m, n, s;
for (m = 2; m <= 1000; m++)
{
s = 0;
for (n = 1; n < m; n++)
{
if (m % n == 0)
{
s += n;
}
}
if (s == m)
{
printf("%d ", m); // 输出完数
}
}
return 0;
}
在修改后的程序中,我将外层循环的条件改为 m <= 1000 ,这样可以包括1000在内。同时,内层循环的条件改为 n < m ,因为我们不需要将m本身计算在内。另外,我在输出完数时添加了一个空格,以便在结果中进行分隔。 isdkz 发表于 2023-11-14 13:15
你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次, ...
你好,这个题只能在两个if语句里面改动
页:
[1]