打卡
1.问题:
求某一范围内完数的个数。
如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1、2、3,而 6=1+2+3,因此6是“完数”。
2.思路:将变量i从1开始自增至目标数的一半,并判断目标数是否能被i整除,并将符合条件的因子求和判断是否和目标数等同。
3.程序流程图:

4.代码实现:
#include <iostream>
using namespace std;
int fact(int x)
{
int k=0;
for(int i=1;i<=(x/2);i++){
if(x%i==0)
k=k+i;
}
if(k==x)
return 1;
else
return 0;
}
int main()
{
int N1,N2;
cin>>N1>>N2;
int count=0;
for(int i=N1;i<=N2;i++){
if(fact(i)){
cout<<i<<"是完全数"<<endl;
}
}
return 0;
}

浙公网安备 33010602011771号