else 上写什么代码才能让它跳到for上继续循环

题目:如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数"。例如6的因子是1, 2, 3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数及这些完数的和。

#include <stdio.h>

int main()
{
int n;
for(n=1;n<=1000;n++)
{ int i=1;
int rest=0;
while(i<=n)
{ rest=i+rest;
if(n==rest)
printf("%d",n);
else if(n<rest)
i++;
else
break;}
}

return 0;
}
结果:1

img

img

你不是都写了break了吗,怎么跳不出去吗

break就是跳出while啊,没毛病。你除了n=1的时候会打印,其余都进了else的break了呀