完数的求解-优化约数的求解

Java编程实现1000以内完数求解 完数,又称亲和数,是指一个数恰好等于它的因子(自身除外)之和。例如,第一个完数是6,它的因子1、2、3相加等于6。在数学史上,完数的研究可以追溯到古希腊数学家毕达哥拉斯,而至今,这类数的探索仍然是数论中的一个迷人主题。因数分解是数学中的一个基础概念,涉及到数论的核心部分。首先,我们来明确“因数”和“因子”的定义。因数:在数论中,如果整数a能够被整数b(b不为零)整除,那么称b是a的一个因数。例如,6可以被1、2、3和6整除,因此1、2、3和6都是6的因数。因子。 阅读详情

完数的求解

完数定义

一个数的约数和(含1,但不包含本身)等于该数本身, 称这个数为完数。

求 10,0000以内的完数程序:参考了求质数时利用开方,缩小求解范围的思想,和约数本身的性质,两个约数的乘积进行拆解,知道较小的约数后可以反求较大的约数。

/**
 * 1000以内的完数
 * 完数:
 * 一个数的约数和(含1不包含本身)等于本身 称 这个数为完数
 * <p>
 * 33550336 为第五个完数
 *
 * @author yanjq
 */
public class PerfectNumTest {
    public static void main(String[] args) {
        //求约数和,可以利用质数的思想,从开平方的范围内缩小,来找,来验证
        int divisorSum;
        long start = System.currentTimeMillis();
        for (int i = 2; i <= 100000; i++) {

            divisorSum = 1;//约数和

            for (int j = 2; j <= Math.sqrt(i); j++) {//利用求质数的思想,开方缩小范围,虽然第五个完数较大
                if (i % j == 0) {
                    divisorSum += j;//约数累加
                    divisorSum += (i / j);//利用大小约数的性质,加上另外一个约数
                }
            }

            if (divisorSum == i) {
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("程序耗时:" + (end - start));
    }
}

相较于参考过的网上的一些写法,求解约数的过程都比较耗时。本段代码参考质数的求解思想做了下改进。虽然第五个完数是:33550336。本人小霸王电脑还没有求解出来第五个完数,不知道有没有更优秀的求解思路,欢迎大佬指点。

Neurocomputing 投稿指南 Generation Information:选择论文所属领域。上传附件(利益声明,手稿,摘要)审稿人偏好:可以选择期待的审稿人。 阅读详情

相关推荐

中小型微服务系统 硬件设备如何部署,QPS大概多少

作为一名合格的开发工程师,不仅仅要在前期开发阶段对业务和技术有深入了解,知道选用哪种合适的技术,业务如何拆分,还要思考后期线上环境,资源,延迟,性能等如何优化维护以及分布式系统一些线上生产的一些问题。 本篇主要针对之前了解的情况对硬件设备资源做一个简单的介绍: 首先分布式系统线上实践问题,我们应该对公司的流量,各个服务,网管,注册中心应该如何部署,部署多少台机器才合适,每台机器的配置如何,每天整体流量有多少,高峰期的请求量有多少,你的整体系统是否扛得住(注:很多公司现在直接使用K8S docker 实现

wangxuelei036的博客 1万+

从完数到梅森素数:一次算法优化的深度探索之旅

本文详细探讨了从完数到梅森素数的算法优化过程,通过Educoder平台的项目实训,展示了如何利用欧拉公式和Lucas-Lehmer检验法大幅提升计算效率。文章深入分析了数学理论与编程实践的结合,为算法优化提供了宝贵洞见。

weixin_29065659的博客 375

跟着团子学SAP PS:BOM和项目结构的联动-BOM Transfer CN33

关于项目中的物料组件挂接你需要了解的一点功能

Lucas1211的博客 2万+

C语言求完数(完全数)(详解版)

本题的关键是求出选取数值i的因子,即从1到i-1范围内能整除i的数,看某一个数j是否为i的因子,可利用语句if(i%j==0)进行判断,求某一个数的所有因子,需要在1到i-1范围内进行遍历,同样釆用循环实现。内层循环j控制除数的范围为1〜i,通过i对j取余,是否等于0,找到该数的各个因子。根据完数的定义,解决本题的关键是计算出所选取的整数i(i的取值范围不固定)的因子(因子就是所有可以整除这个数的数),将各因子累加到变量s (记录所有因子之和),若s等于i,则可确认i为完数,反之则不是完数。

sinat_41942180的博客 5913

Diebold-Mariano检验

给定两个预测的预测结果,我们希望比较他们的预测结果,以用于预测模型精度的比较。 Diebold-Mariano检验本质是一个t检验,用于检验替代预测的两个损失序列的平均值是否相等。即,它是一系列损失差的零均值的t检验。在存在自相关的情况下,它使用损失差分时间序列标准差的自相关一致性估计。 注意,在使用DM检验式时,假设损失序列是平稳的。 另外,DM检验在小样本数据时往往会拒绝零假设。对于小样本数据,推荐Harvey, Leybourne and Newbold (HLN)检验【1】; 参考文献 【1】htt

weixin_43948357的博客 6565

麦克风声源定位原理_声源定位—如何定位到噪声根源?

前言TPA(传递路径分析)专题系列已经开篇。其遵循方法论:源(Source)——路径(Path)——响应(Receiver)有人说TPA好,它可以识别出路径处甚至源的载荷特征,可以量化各个路径的贡献量。有人说声源定位好,不管东西南北中,“源”自其中。但是,声源定位识别出来色彩丰富的一个结果,这结果被您拿来应付工作了,还是真正帮您解决了问题?声源定位定位到了噪声的根源了么?对于一些声源现,...

weixin_39943678的博客 3973

java求完全数算法以及优化拓展

/*一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。*/ public class CompleteNumber { private int firstFactorNumber; /** * 因为不管怎么计算由于非素数数都可以通过1·9中通过乘计算得出所以除了1和2只需要继续是否可以被2-9整除就可以 * 这一说法利用了提取最小公因式来计算得出 ...

易庞宙的博客 1万+

STM32 使用IO口模拟I2C时序

上一篇《I2C协议详解》 我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对...

8937

小于1000000的所有完数算法的优化

完数是指其所有因数(不包括其本身)之和等于其本身的数,例如:6 = 1 + 2 + 3,本例是研究求小于1000000的完数的最优算法.编程环境是Dev C++ 4.92首先,想到的算法如下: int main(int argc, char *argv[])...{    int nNum;    cin>>nNum;    time_t tBegin = clock();    

yclz的专栏 3393

用逻辑分析仪实测EM4095:125kHz RFID耳标解码的电压与脉宽玄学

本文通过逻辑分析仪实测EM4095芯片,深入解析125kHz RFID耳标解码中的电压与脉宽关联现象。揭示了供电电压对曼彻斯特编码脉宽的影响规律,并提供了一套可落地的调试方法论,包括信号链路解析、逻辑分析仪配置技巧及系统级稳定性提升方案,帮助开发者解决解码不稳定问题。

weixin_30629653的博客 329

WOFOST作物模型(7):6.0.6版本的PCSE使用(多层水分平衡和SNOMIN碳氮模型的集成)

wofost81文件结构如上,其中所需的参数可从github上获取然后input下有两个需要调用的功能函数py文件,需要拖到自己的运行py文件同级目录下在使用土壤模块SNOMIN进行作物生长模型模拟时,需要为土壤剖面的不同层次提供多种输入变量。这些变量通常不随年份变化,因此会统一在土壤文件中定义。本节将说明如何将这些输入变量整合到一个字典中,进而生成SNOMIN能够读取的土壤文件。

所有专家都曾始于新手 638

求完全数,优化问题

#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int a,b; cin>>a; while(a--) { /* c++在一秒内最多处理2.5*10的7次方次数据,计算时间复杂度为10的10次方 超时,因此将程序优化。由于得到一个约数i后,同时得到另一个约数b/i,

weixin_46032370的博客 241

NSX-T 4.1部署搭建

NSX-T4.1 部署搭建

weixin_58250887的博客 564

经典算法(c++)完数 内含两种解题思路(>+<)

一个数如果恰好等于它的所有因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。输入一个正整数n(0

weixin_68248076的博客 2836

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

实现完数求解从原理到实践掌握完数编程技巧

通过本文的讲解,我们从完数的数学定义、性质、编程实现到优化算法和实际应用做了全面的介绍。希望大家能通过理解完数,激发自己对数学和编程的兴趣,也为将来的数学研究和编程实践打下坚实的基础。??

xzy15371813772的博客 2037

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

《求1000以内的完数——JAVA第四周》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:    《求1000以内的完数——JAVA第四周》                          * 作    者:       刘江波                       * 完成日

JiangBo_Liu 博客 6436

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu-1406-完数

原文链接:hdu-1406-完数 原文: 完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 31040    Accepted Submission(s): 11660 Problem Descripti

IT_xiaolaoshu的博客 395

ACM竞赛数论核心:质数筛法原理、优化与完数求解实战

质数与素数是数论与算法竞赛的基石概念,指在大于1的自然数中,除了1和自身外无法被其他自然数整除的数。其高效判定与批量生成的核心原理在于筛法思想,即通过标记合数来反推质数。埃拉托斯特尼筛法(埃筛)通过从质数倍数标记合数,达到O(N log log N)的时间复杂度,而线性筛(欧拉筛)确保每个合数仅被其最小质因子标记一次,实现理论最优的O(N)复杂度。掌握这些算法具有极高的技术价值,它们不仅是解决质数相关问题的利器,更是高效完成质因数分解、计算约数个数与和、求解欧拉函数等高级数论操作的基础模块。在ACM/ICP

weixin_34205826的博客 385

实例019:完数 一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数。

# 如果一个数恰好等于它的真因子之和,则称该数为“完全数”。 # 真因子(即除了自身以外的约数)

c_lanxiaofang的博客 4718

完数 素数 阿姆斯特朗数的题解思路

完数 素数 阿姆斯特朗数 一看便懂,一做便对

m0_61196970的博客 225

学习记录——java perfect number

题目 求1000以内完数 完数定义: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数)恰好等于它本身 例如: 1+2+4+7+14=28 以下 public class PerfectNumber { public static void main(String[] args) { int s =0; for(int i=2;i<1000;i++) { for(int j=1

Yakiniku菜鸡上路 375

C语言谭浩强第五版课后题答案第5章

C语言谭浩强第五版课后题答案第5章

qq_62253103的博客 1841

Java判断完美数_Java语言求解完美数代码分析

1、概念首先我们理解一下,什么叫做完美数?问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数”例如,6=1+2+328=1+2+4+7+14496=1+2+4+8+16+31+62+124+2488128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064按照完数的定义,其实用程序求解完数并不是太难,先...

weixin_27310417的博客 514

C++求完全数

AcWing725.求完全数 完全数定义:一个数除它本身以外的所有约数之和等于它本身。 要求一个数是不是完全数首先要求出所给数的所有约数。 for(int i=2; i<X; i++) { if(X%i==0) sum=sum+i; //X是要求的数,sum是约数之和 这段代码可以求出一个数的所有约数,但缺陷在于我们需要从1到这个数本身依次做一遍X%i的操作,在所给数过大时会超时,比如求666666是不是一个完全数。 for(int i=2; i<sqrt(X)

guobingk的博客 5187

6.6 完数(project) educoder项目实训

一个小小完数,居然涉及如此广泛的数论知识,深刻提醒我数学在计算机领域的运用确实是十分广泛的,学习算法的路上,数学一定是一大助力。

m0_73604362的博客 1824

蓝桥杯竞赛必备:O(√n)算法高效求解数字真因子和

在编程竞赛和算法学习中,求解一个数的因子(约数)是基础且核心的数论问题。其原理基于因子成对出现的数学性质,通过遍历到平方根即可找到所有因子,将时间复杂度从O(n)优化至O(√n),极大提升了算法效率。掌握这一优化技巧具有极高的技术价值,它是解决许多复杂问题(如判断完数、盈数,以及后续质因数分解、最大公约数求解)的基石,广泛应用于算法竞赛、编程能力测试及基础数学计算场景。本文以蓝桥杯等竞赛中常见的“求数字真因子和”问题为具体案例,深入剖析了从暴力枚举到开方优化的完整思路,并重点讲解了如何处理质数、完全平方数以

weixin_30825199的博客 363
上一篇: javaGUI绘图频闪
下一篇: Java打印杨辉三角
Sweetbreads
博客等级 码龄10年 29粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值