首页 > 其他分享 >打卡5.9——求某一范围内完数的个数

打卡5.9——求某一范围内完数的个数

时间:2023-05-14 20:55:08浏览次数:36  
标签:int 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;
}
   

标签:int,5.9,因子,循环,完数,打卡,范围
From: https://www.cnblogs.com/genyuan0/p/17400179.html

相关文章

  • 5-14打卡 力扣24. 两两交换链表中的节点
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]来源:力扣(LeetCode)链接:https://leetco......
  • 每日打卡26
    一、问题描述一三位数的各个位数立方和等于本身,求所有水仙花数二、 三、流程图设计 四、代码实现#include<iostream>usingnamespacestd;intmain(){ intn,a,b,c,x; cin>>x; for(n=100;n<x;n++){ a=n/100; b=n%100/10; c=n%10; if(n==a*a*a+b*b*b+c*c*c){ cout<<n<<e......
  • 建民打卡日记5.14
    一、问题描述一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:012345678910M:10X987......
  • 2023.5.14编程一小时打卡
    一、问题描述:计算点到直线的距离。首先设计一个点类Point,它有2个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3个私有数据成员a,b和c,表示直线方程ax+by+c=0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的......
  • c++打卡练习(27)
    求x的y次方的最后三位数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){intnum,y,x,i;printf("输入x以及x的次数y\n"); scanf("%d%d",&x,&y); for(i=1,num=1;i<=y;i++){ num=num*x%1000; }printf("%d",num); r......
  • 5-12打卡,练习
    实现一个z字形的字符串排列classSolution{public:voidconvert(strings){intn=s.size()-1,N=s.size()-1;intm=n%4;while(n>=0){if(n!=N){cout<<"";......
  • 5.14打卡
    问题描述:比较两个分数的大小二、设计思路:要求通分后的最简公分母,即求两分母的最小公倍数。求最小公倍数的前提是求出两数的最大公约数,最大公约数的求解采用辗转相除的方法,步骤如下:(1)用较大的数m除以较小的数n,得到的余数存储到变量b中;b=m%n;(2)上一步中较小的除数n和得出的余数b......
  • 打卡5.8——委派认为问题
    1.问题描述某项任务需要在A、B、C、D、E、F这6个人中挑选人来完成,但挑选人受限于以下的条件:(1)A和B两个人至少去一人;(2)A和D不能同时去;(3)A、E和F三人中要挑选两个人去;(4)B和C同时去或者都不去;(5)C和D两人中只能去一个;(6)如果D不去,那么E也不去。试编程求出应该让哪几个人......
  • 打卡5.6——求车速
    问题描述:一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?问题分析:对称数是95859,两小时后出现新的,这个数......
  • 打卡5.7——三色球问题
    1.问题描述一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?2.问题分析假设八个球,红球a个,白球b个,黑球c个,那么c=8-a-b个。而且a<=3,b<=3,也就是说8-a-b<=63.算法设计穷举法用两个for循环,第一个for控制红球的数量,第二个控制白......