第二、三次上机
前言
自己写的上机作业,可以用于参考
目前处于初步学习中,写的不好见谅
一、题目
二、解题
1.思路
找范围【a,b】内所有的完数,即从a开始试数判断是否满足完数的定义,判断到b结束
此处用一个循环即可解决
需要对【a,b】内的数i,求其所有除他本身外因子的和
用一个循环从1开始试数,试到 i/2 即可,一个数i除他本身的最大因子为n/2
若n对所试的数求余等于0,即该数为i的一个因子
对因子求和,若等于i,则i为完数,输出i
2.代码
代码如下(示例):
#include<stdio.h>
int main()
{
int a,b,i,sum,d;
scanf("%d %d",&a,&b);
a>0&&a<b&&b<10000;
for(i=a;i<=b;i++)//对【a,b】内的数都进行是否为完数的判断
{
for(sum=0,d=1;d<=i/2;d++)//d从1开始试,判断是否为 i的一个因子
{
if(i%d==0)sum=sum+d;//若d是i除其本身的因子,则求和
}
if(sum==i)printf("%d\n",i); //满足完数定义,则输出
}
return 0;
}