版权声明:本文为博主原创文章,未经博主允许不得转载。

/* (程序头部注释开始)
版权声明:保留个人权利。  如程序有不当之处,敬请指正。* 文件名称:    《一些简单的java编程题(1) ————求10000以内的完数》
* 作    者:  那就去巴黎
* 完成日期:  2018 年  01 月   29 日
* 版 本 号:  JDK 9.0.1问题描述:
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数,简称“完数” 。
例如: 6=1+2+3。   28=1+2+4+7+14 。
编写一个Java程序,找出  10000 以内的所有完数。题目分析:
可以使用for循环,和求余数符号% 先求自然数的出所有的真因子,然后相加,如果等于此自然数本身则为完数。* (程序头部的注释结束)
*/
package questions;public class Q1
{public static void main(String[] args){int n=10000;perfectNumber(n);}private static void perfectNumber(int n)   // 编写一个perfectNumber 的方法来找出完数{System.out.println(n+"以内的完数为:");for(int i=1;i<n+1;i++)                 // 循环 10000 及以内的数, 此处  i<n+1  也可以写成  i<=n{int sum=0;for(int j=1;j<i/2+1;j++) {if(i%j==0)                     // 找出所有真因子{sum+=j;                    // 使所有找出的真因子一个个相加。if(j==i/2 && sum==i)       /* 此处的 j==i/2 是因为: 如 24=1+2+3+4+6+8   并不是所有真因子之和,缺了真因子12。  所以此处强制先行判断是否求出所有真因子。*/{System.out.print(i+"  ");}}}}}
}

程序运行结果如下:

编程结束发现,如果去判断是否是所有真因子的相加,程序的编程思想复杂,可以进一步调整结构,改善程序。

改善程序如下:

package questions;public class Q1_Test
{public static void main(String[] args) {  int n=10000;perfectNumber(n);  }  private static void perfectNumber(int n){  System.out.println(n+"以内的完数有:");  //println 和 print 的区别是前者输出时换行for(int i=1; i<=n; i++)      // 此处就使用了 i<=n{   int sum = 0;  for(int j=1; j<i; j++)   // 此for循环内,所有真因子直接相加。 {  if(i%j ==0)  {  sum = sum + j;  // sum+=j 是 sum=sum+j的简化写法。  }     }  if(sum == i)  //当此处的判断 if 跳出第二个for循环时,不用判断是否所有真因子相加。{  System.out.print(i+"  ");  // "  " 内的空格是为了让显示的结果更清楚}   }      }
}  

程序运行结果如下:

疑问:

当设 n= 100,000,000时,或者n的数值更大时,程序无法运行出 8128之后的完数。   希望能有人解答下疑问。

一些简单的java编程题(1) ————求10000以内的完数相关推荐

  1. 求10000以内的完数

    一.代码 //问题:输出10000以内的完数//完数:如果一个数恰好等于除它本身外的因子之和,这个数就是完数.//例如:6=1+2+3 #include <stdio.h> #includ ...

  2. 一些简单的java编程题(2) ————古典问题(兔子问题)

    版权声明: 本文为博主原创文章,未经博主允许不得转载. /* (程序头部注释开始) 版权声明:保留个人权利. 如程序有不当之处,敬请指正.* 文件名称: <一些简单的java编程题(2) --- ...

  3. java求1000以内所有完数

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

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

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

  5. “完数”问题 求1000以内的完数

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

  6. 求 1000 以内的完数

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

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

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

  8. C#求1000以内的完数

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

  9. python 求1000以内的完数

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

最新文章

  1. 遇到大容量磁盘你该怎么办?
  2. nagios配置监控的一些思路和工作流程
  3. linux系统配置之开机启动过程(centos)
  4. execve系统调用_张凯捷—系统调用分析(3) (基于最新Linux5.0版本系统调用日志收集系统)...
  5. python爬取知乎问题_python爬取知乎首页问题
  6. C/C++:读写文件
  7. Apache Flink Meetup · 北京站,1.13 新版本 x 互娱实践分享的开发者盛筵!
  8. 携程中转机票竟然相差23小时
  9. Java JSON转换为map
  10. logisim的安装
  11. 数字电子技术之逻辑门电路
  12. bin音频文件转MP3
  13. 根据经纬度获取地址(逆地址解析)
  14. php 项目反应理论,科学网—好文 | 纽约石溪大学:机器学习中基于项目反应理论的集成学习 - 陈培颖的博文...
  15. 手持「前症保障」的百惠保,号称最容易理赔的重疾险?
  16. linux基本功之df命令实战
  17. windows的dmp文件使用
  18. android图片音乐播放器,android 音乐播放器----获取专辑封面图片
  19. 宝贝与iPad-新生代的玩具
  20. Android R input (四) 之 InputChannel之发送事件处理反馈

热门文章

  1. linux 科学数据处理,科学数据分析和可视化 NCAR Command Language(NCL)(气象数据处理)...
  2. 作文自动批阅程序简介
  3. 【课程设计】教学设备管理系统(源码 + 详解)
  4. 锚喷竖井在污水管道流量计井中的应用
  5. 狂爱五!道!口!五道口资料大汇总!
  6. 看不见网络其他计算机,局域网中看不到其他计算机怎么办
  7. 老子《道德经》第五十章
  8. 翼码张波O2O分享8:O2O的消费体验
  9. STA - 不同时钟域之间插入latch,fix hold违例
  10. docker入门之基础命令