判断完数
一个数如果恰好等于他的因子之和就称为完数,例:6的因子为1,2,3,而6=1+2+3,所以为完数。求一千以内的所有完数。
我这个程序不知哪里逻辑错了,能运行但没结果啊
#include<stdio.h>
int main()
{
int m, n, a = 0;
for (m = 1; m < 1000; m++)
{
for (n = 1; n < m; n++)
{
if (m % n == 0)
{
a = a + n;
}
}
if (a == m)
printf("%d", m);
}
return 0;
} 【系统公告】2023/11/8 11:52 站长的openai账号被大量封禁,目前已不够支持服务,请各位稍安勿燥, 将尽快恢复服务
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} 问题出在你没有在每次判断一个数是否为完数之前,将变量a重新置零。因此,在第二次判断时,a的值已经累加了上一次的结果,导致判断错误。以下是修改后的代码:
#include<stdio.h>
int main()
{
int m, n, a;
for (m = 1; m < 1000; m++)
{
a = 0; // 每次判断前将a置零
for (n = 1; n < m; n++)
{
if (m % n == 0)
{
a = a + n;
}
}
if (a == m)
printf("%d ", m);
}
return 0;
}
这样,每次判断一个数是否为完数时,都会先将a重新置零,然后再进行累加。这样就能正确判断出一千以内的所有完数了。
页:
[1]