完数

 问题分析:这个所求数,最小默认从2开始,假设范围是1000以内,第一层循环遍历2到1000内的所有数,第二层循环重新定义一个新的变量j,遍历能整除i的数,但其最大不会是i,遍历到i-1即可。

程序流程图:

 程序代码实现:

#include<stdio.h>
int main()
{

int i,j,s,n;
scanf("%d",&n);
for(i=2;i<=n;i++)
{ s=0;
for(j=1;j<i;j++)
{

if(i%j==0)
s+=j;
}
if(i==s)
printf("%d\n",i);
}

 

 

 

 

 

 

return 0;
}

posted @ 2023-05-25 19:41  千恒  阅读(60)  评论(0编辑  收藏  举报