“完数”问题 求1000以内的完数
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如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以内的完数相关推荐
- 完数:求1000以内所有完数
题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如:6=1+2+3.编程找出1000以内的所有完数. #include <stdio.h> ...
- 求 1000 以内的完数
求 1000 以内的完数 完数:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.例如:6 = ...
- java蓝桥杯算法训练 求1000以内的完数(题解)
试题 算法训练 求1000以内的完数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为"完数". ...
- java求1000以内所有完数
这回是java编写,求1000以内所有完数. 完数:一个数如果恰好等于除它本身外的因子之和,这个数就称为完数. 例:6=1+2+3(6的因子是1,2,3). public class java7{ p ...
- C#求1000以内的完数
1000以内的完数 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子 ...
- python 求1000以内的完数
一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如6=1+2+3.编程找出1000以内的所有完数. count = 0 for i in range(1,1001):li ...
- java求1000以内的完数及分析
需求: 一个数如果恰好等于它的因子之和, 这个数就称为"完数". 例如 6 = 1+2+3.编程找出 1000 以内的所有完数. 分析: 一千个数肯定跑不了循环的使用,常用的循环有 ...
- JAVA 求1000以内的完数
一个数如果恰好等于它的因子之和,这个数就成为完数.编写应用程序求1000之内的所有完数. public class Hello { public static void main(String[] a ...
- C语言:求1000以内的完数
概念: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该 ...
最新文章
- YOLO v4它来了:接棒者出现,速度效果双提升
- MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-2-设置-虚拟机
- 重构学习1-重命名方法、类、参数等
- 腾讯广告算法大赛官方“开挂”,为你直播赛题解析!
- phpstudy运行PHP项目出现404怎么办?
- CSS从零开始(1)--CSS基础语法
- 德赛西威领投智驾科技B轮3亿元,加速智能驾驶人人可享
- 安卓版LightBlue 低功耗蓝牙BLE设备调试
- 如何解决unity使用vs2017、vs2018、vs2019等 编辑器创建新项目时无法产生.sln文件的一个小办法
- MySQL数据库实验环境
- 3D平面SLAM相关总结与思考
- Unreal Engine 4学习资料整理
- Forcing close of thread
- 服装家纺生产制造执行系统——MES
- openfeign集成Hystrix的备选方案处理
- php 一键登录插件,帝国CMS一键登录插件(带后台管理)
- 快速复制粘贴小工具txmouse
- On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
- ESP8266_GET请求天气预报、json解析
- U盘变为只有2M大小空间的解决方法