判断N个数是否是完全数

简介: 判断N个数是否是完全数

🌵🌵🌵前言

题目

一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。

例如,6 就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3=6。

现在,给定你 N 个整数,请你依次判断这些数是否是完全数。

  • 输入格式
    第一行包含整数 N,表示共有 N 个测试用例。

    接下来 N 行,每行包含一个需要你进行判断的整数 X。

  • 输出格式

每个测试用例输出一个结果,每个结果占一行。

如果测试数据是完全数,则输出 X is perfect,其中 X 是测试数据。

如果测试数据不是完全数,则输出 X is not perfect,其中 X 是测试数据。
  • 数据范围
    1≤N≤100,
    1≤X≤10^8^

解析

c++1s中内,大概可以计算<1亿次,
若每次皆为1亿,计算100次,则循环100亿次,>1亿次,已超时,所以需要优化。

  • 1不是完全数
  • 假设数为x,a为其约数,则x/a也为其约数, 因为 a * (x/a) = x
    假设约数中较小的那方为a,则a最大为x^1/2^
  • 所以我们只需从2开始遍历其前x^1/2^(含x^1/2^)的数即可,记得先将sum+1,因为1也算入约数

因为x最大为10^8^,开根号后为10^4^,100个数需10^6^<10^8^,所以不会超时。

另一思路:100000000 内的完全数有且仅

  • 6
  • 28
  • 496
  • 8128
  • 335503366

直接比较即可

代码

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    int n;cin>>n;
    for(int i=0;i<n;i++){
        int x;cin>>x;
        int sum=0;
        
        if(x==1) sum=0;
        else{
            sum+=1; //加上1
            for(int j=2;j*j<=x;j++){
                if(x%j==0) {
                    if(j!=x/j)  sum=sum+j+x/j;
                    else sum+=j;
                }
            }    
        }
        if(sum==x) cout<<x<<" is perfect"<<endl;
        else cout<<x<<" is not perfect"<<endl;
    }
    return 0;
}
目录
相关文章
|
11月前
|
安全 网络安全 数据安全/隐私保护
如何识别和防范网络诈骗?
识别和防范网络诈骗需要我们时刻保持警惕,仔细核实信息,保护好个人信息和财产安全,遇到可疑情况及时与相关机构或警方联系,共同打击网络诈骗行为。
719 13
antd table合并行或者列(动态添加合并行、列)
在Ant Design的Table组件中实现行或列的合并,通过动态计算数据源中的`rowSpan`或`colSpan`属性来控制,支持对特定字段进行行或列合并,包括多选框列的合并处理。
1626 3
antd table合并行或者列(动态添加合并行、列)
|
12月前
|
存储
Electron-store 存储数据的大小限制
【10月更文挑战第18天】虽然无法给出一个确切的数字来表示 Electron-store 的存储数据大小限制,但通过对相关因素的分析和理解,我们可以更好地管理和利用这一存储工具,为应用的稳定运行提供保障。同时,随着技术的不断发展和进步,未来可能会有更优化的存储解决方案出现,进一步拓展我们的存储能力和应用场景。
|
安全 Linux 测试技术
最新版Kali虚拟机安装和汉化中文教程
本文是对渗透测试安全人员经常使用的测试系统的最新版进行的一次系统配置下载安装配置,同时包含汉化的教程,是对自己熟悉系统安装环境配置的一次总结
3341 0
如何使用pympler或objgraph生成内存快照?
如何使用pympler或objgraph生成内存快照?
359 0
|
Java Spring 容器
BeanFactory 和 ApplicationContext 有什么区别?
BeanFactory 和 ApplicationContext 有什么区别?
422 0
|
数据采集 云安全 边缘计算
阿里云峰会 | 阿里云CDN六大边缘安全能力,全力助推政企数字化转型
6月9日,2020年阿里云线上峰会召开。阿里云CDN正式对外发布基于CDN构建的六大边缘安全能力,全力助推政企数字化发展。
1930 0
阿里云峰会 | 阿里云CDN六大边缘安全能力,全力助推政企数字化转型
|
数据可视化 物联网 测试技术
评估企业扩展业务能力的新方法
评估企业扩展业务能力的新方法
617 0
生活号后台操作说明
一、生活号产品介绍 生活号是支付宝为企业、组织和个人提供的直接触达用户的服务平台。商家可以通过生活号对用户进行信息推送、服务输出、交易场景打通和会员关系管理。  二、入驻生活号 步骤1:登录生活号平台,输入支付宝登录账号和密码。
2163 11
|
Shell 数据格式
【shell脚本】如何在不同时间段,执行任务
基于shell脚本,实现在不同时间段,执行任务。
2552 0