好奇怪,新手上路。有没有朋友帮忙看一下
求1000以内的完数。
你的边界条件应该是j<num,而不是1000
你的内存循环应该小于num
#include <stdio.h>
int main()
{
int num, sum, i;
for(num = 1; num <= 1000; num ++)
{
sum = 0; //每次判断一个数都要将 sum 初始化为 0
for (i = 1; i < num; i++)
{
if (num % i == 0) //num 能被 i 整除,说明 i 是 num 的因子
{
sum += i; //累加因子
}
}
if(sum == num)
{
printf("%d\n", num);
}
}
return 0;
}
你看看完全数的定义:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
注意:是除了自身之外的约数!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
你里面的for循环条件改为j<num就对了!!!!!!!