打卡5.9——求某一范围内完数的个数
如果一个数等于它的因子之和,则称该数为完数,例如“6”的因子为1,2,3,而6=1+2+3,因此6是完数
问题分析:
假设一个数d,然后计算出它的每个因子,用到for循环,假如是a,b,c,然后进行一个判断如果a+b+c=d,就说明d是完数,应该要用到两层循环,最外层循环从2开始,一直到d,内层循环从1开始,一直到a,然后开始取余,如果等于0,就说明是它的因子。
也就是
for (a = 2; a <= d; a++)
{
c = 0;//这里是要循环时c的值为0
for (b = 1; b < a; b++)
{
if (a % b == 0)//看看b是不是a的因子
c += b;
}
if语句判断一下,这个if语句在for循环里,每个完数都会输出
if (a == c)
{
cout << a<<endl;//直接输出a
}
完整的就是
#include<iostream>
using namespace std;
int main()
{
int a, b, c, d;//a选定数范围,b除数范围,c是和
cin >> d;//d输入范围的上限
for (a = 2; a <= d; a++)
{
c = 0;
for (b = 1; b < a; b++)
{
if (a % b == 0)//判断是不是因子
c += b;
}
if (a == c)//因子的和与原数的大小比较
{
cout << a<<endl;
}
}
return 0;
}


浙公网安备 33010602011771号