一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程 找出1000以内的所有完数。(因子:除去这个数本身的其它约数)

一般解法:

class Numpractice
{public static void main(String[] args) {for(int i = 1;i <= 1000;i++){int factor = 0;   for(int j = 1;j <= i/2;j++){ if(i % j == 0){factor += j;}}if(i == factor){System.out.println(i);}}}
}

优化解法:

class Numpractice
{public static void main(String[] args) {for(int i = 1;i <= 1000;i++){int factor = 1;   for(int j = 2;j <=Math.sqrt(i);j++){ if(i % j == 0){factor += (j+(i/j));//根据已求出的较小的因子(j)直接计算出与之对应的较大的因子(i/j)}}if(i == factor){System.out.println(i);}}}
}

整体源代码:

class Numpractice
{public static void main(String[] args) {/*  优化前的解法 为突出时间差距将条件改成了求100000内的”完数“long start = System.currentTimeMillis();for(int i = 1;i <= 100000;i++){int factor = 0;   for(int j = 1;j <= i/2;j++){if(i % j == 0){factor += j;}}if(i == factor){System.out.println(i);}}*/long start = System.currentTimeMillis();for(int i = 1;i <= 100000;i++){int factor = 1; for(int j = 2;j <=Math.sqrt(i);j++){if(i % j == 0){factor += (j+(i/j));}}if(i == factor){System.out.println(i);}}long end = System.currentTimeMillis();System.out.println("所花费的时间为:" + (end - start));}
}

这里为体现两种解法的时间差距,将题目条件改成了求十万以内的“完数”。
一般方法:

优化后:

“完数”问题 求1000以内的完数相关推荐

  1. 完数:求1000以内所有完数

    题目:         一个数如果恰好等于它的因子之和,这个数就称为"完数".例如:6=1+2+3.编程找出1000以内的所有完数. #include <stdio.h> ...

  2. 求 1000 以内的完数

    求 1000 以内的完数 完数:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.例如:6 = ...

  3. java蓝桥杯算法训练 求1000以内的完数(题解)

    试题 算法训练 求1000以内的完数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为"完数". ...

  4. java求1000以内所有完数

    这回是java编写,求1000以内所有完数. 完数:一个数如果恰好等于除它本身外的因子之和,这个数就称为完数. 例:6=1+2+3(6的因子是1,2,3). public class java7{ p ...

  5. C#求1000以内的完数

    1000以内的完数 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子 ...

  6. python 求1000以内的完数

    一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如6=1+2+3.编程找出1000以内的所有完数. count = 0 for i in range(1,1001):li ...

  7. java求1000以内的完数及分析

    需求: 一个数如果恰好等于它的因子之和, 这个数就称为"完数". 例如 6 = 1+2+3.编程找出 1000 以内的所有完数. 分析: 一千个数肯定跑不了循环的使用,常用的循环有 ...

  8. JAVA 求1000以内的完数

    一个数如果恰好等于它的因子之和,这个数就成为完数.编写应用程序求1000之内的所有完数. public class Hello { public static void main(String[] a ...

  9. C语言:求1000以内的完数

    概念: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该 ...

最新文章

  1. YOLO v4它来了:接棒者出现,速度效果双提升
  2. MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-2-设置-虚拟机
  3. 重构学习1-重命名方法、类、参数等
  4. 腾讯广告算法大赛官方“开挂”,为你直播赛题解析!
  5. phpstudy运行PHP项目出现404怎么办?
  6. CSS从零开始(1)--CSS基础语法
  7. 德赛西威领投智驾科技B轮3亿元,加速智能驾驶人人可享
  8. 安卓版LightBlue 低功耗蓝牙BLE设备调试
  9. 如何解决unity使用vs2017、vs2018、vs2019等 编辑器创建新项目时无法产生.sln文件的一个小办法
  10. MySQL数据库实验环境
  11. 3D平面SLAM相关总结与思考
  12. Unreal Engine 4学习资料整理
  13. Forcing close of thread
  14. 服装家纺生产制造执行系统——MES
  15. openfeign集成Hystrix的备选方案处理
  16. php 一键登录插件,帝国CMS一键登录插件(带后台管理)
  17. 快速复制粘贴小工具txmouse
  18. On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
  19. ESP8266_GET请求天气预报、json解析
  20. U盘变为只有2M大小空间的解决方法

热门文章

  1. 微软zone DNS服务器,DNS 策略概述
  2. iOS App 名字国际化的办法
  3. 谱半径一定大于0_S11大于0怎么回事
  4. 如何把图片上的文字转换成可编辑的文档文字?
  5. 【机器学习基础】EM算法详解及其收敛性证明
  6. esp32 参考引脚图
  7. 嵌入式应用层开发要学习什么
  8. docker的部署及使用
  9. 元旦技术大礼包 - 2017金秋将要发布的PostgreSQL 10.0已装备了哪些核武器?
  10. python传输视频文件_Python视频传输