一、完全数概念。
完全数,也即因子(除过本身)之和等于自身的数。
举例:6的因子有1、2、3、6(自身不参与累加),且6=1+2+3,则6成为完全数。
二、按照题目所需给出编程思路。
Step1:
需判断1~1000内所有的完全数,可采用穷举策略对1~1000的每一个数进行一次判断,则需要初步给出第一次for循环(i),即:
int main()
{
for(int i = 2;i<=1000;i++)
{
}
}
这里int i直接取2的原因是:1的因子是1,且1=1,但1不是完全数,所以可以直接从2开始循环判断。
Step2:
进入Step1的for循环之后,开始对2~1000每一个数进行分析。
首先判断 i 是否存在因子,我们再给出一次for循环(j),让 i 分别对1~自身进行取余,即可判断 i 的因子;
如果 i % j == 0 ,我们把这个因子累加,以便后续判断因子之和是否等于数字本身。(所以还应在第二次for循环前给出变量sum)
给出代码:
int main()
{
int i = 2;
for ( int i = 2; i <= 1000; i++)
{
int sum = 0 ;
for (int j = 1; j <= i - 1; j++)
{
if (i % j == 0)
{
sum = sum + j;
}
}
}
}
Step3:
判断因子之和是否等于自身。
给出if判断语句,判断i是否等于Step2最后累加得到的sum并且打印该数即可。注意该条判断语句的位置,是在每一次因子累加后进行判断,也就是退出第二次for循环(j)时进行判断。
三、补充完成代码:
int main()
{
int i = 2;
for ( int i = 2; i <= 1000; i++)
{
int sum = 0;
for (int j = 1; j <= i - 1; j++)
{
if (i % j == 0)
{
sum = sum + j;
}
}
if (i == sum)
{
printf("%d为完全数\n", i);
}
}
return 0;
}
四、调试结果: