for (d=1;d<n;d++)
{
if (n%d==0) //d 表示~n-1 之间的数,如果 n 能整除 d,则 d 是 n 的一个因子
sum=sum+d; //sum 表示 n 的因子之和
}
if (n==sum) // 如果 n 与 n 的因子之和相等,则表明 n 是一个完数
{
printf(" \n");
printf( "%d" ,n);
printf(" its factors are " );
for (d=1;d<n;d++)
{
if (n%d==0)
printf("%d" ,d);
}
}
}
}
}
printf(" \n");
return 0;
}
从图
1 的编译链接结果可知,该程序不存在语法错误。该程序的运行结果如
图
2 所示。从图 2 及表 1 中的代码可看出,程序运行后并没有输出 1000 以内的
所有完数及其因子。从而可知程序结果与开发者预期不一致
( 也就是说,程序存
在逻辑错误
) ,这时需要通过调试的手段来找出逻辑错误,并加以修改。