`

完数问题

 
阅读更多

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

 

解析:(参考百度百科)

完全数(Perfect number)

又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

相关概念

对于“4”这个数,它的真约数有1、2,其和是3,比4本身小,像这样的自然数叫做亏数。对于“12”这个数,它的真约数有1、2、3、4、6,其和是16,比12本身大,像这样的自然数叫做盈数。所以,完全数就是既不盈余,也不亏欠的自然数。
完全数有许多有趣的性质:
1、它们都是三角形数 例如:
6=1+2+3
28=1+2+3+4+5+6+7
496=1+2+3+……+30+31
8128=1+2+3……+126+127

 

/*
	 * 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
	 * 不可能有超过n/2值的因子,所以除到n/2即可
	 */
	public static void print4(int num) {
		StringBuffer str = new StringBuffer();
		long start = System.currentTimeMillis();
		for (int n = 1; n <= num; n++) {
			int temp = 0;
			for (int k = 1; k <= n / 2; k++) {
				if (n % k == 0) {
					temp += k;
				}
			}
			if (temp == n) {
				str.append(n);
				str.append(",");
			}
		}
		long end = System.currentTimeMillis();
		System.out.println(str.toString() + "用时:" + (end - start) + "毫秒");
	}

	/*
	 * 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。 根据它们都是三角形数
	 */
	public static void print5(int num) {
		StringBuffer str = new StringBuffer();
		long start = System.currentTimeMillis();
		int m = 1;
		int n = m++;
		for (; n <= num; n += m++) {
			int temp = 0;
			for (int k = 1; k <= n / 2; k++) {
				if (n % k == 0) {
					temp += k;
				}
			}
			if (temp == n) {
				str.append(n);
				str.append(",");
			}
		}
		long end = System.currentTimeMillis();
		System.out.println(str.toString() + "用时:" + (end - start) + "毫秒");
	}

	public static void main(String[] args) {
		T2.print4(10000);
		T2.print5(10000);
	}
 输出:
6,28,496,8128,用时:143毫秒
6,28,496,8128,用时:8毫秒
 
分享到:
评论

相关推荐

    c++实例编程100例中的完数问题

    这个课题“c++实例编程100例中的完数问题”旨在教授如何在DOS环境下编写一个程序来寻找并打印出所有的完数。 在DOS环境下编程,通常会使用文本界面,而非图形用户界面。因此,这个程序可能涉及命令行输入输出,这...

    完数问题-C语言视频

    完数问题-C语言视频 融智技术学院出品的视频很给力!

    完数求解问题

    一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子: 输入 N 输出 ? its factors are ? ? ? 样例...

    完数问题解决.cpp

    /* 问题:输出1000以内的完数 完数:如果一个数恰好等于除它本身外的因子之和,这个数就是完数。 例如6=1+2+3. */

    求完数的问题 用c#编写的

    完数是指一个正整数,它的...总之,利用C#解决求完数问题可以帮助我们理解因数分解、循环控制结构以及函数的使用等基础知识。这个程序虽然简单,但足以展示C#的基本语法和编程思路,对于初学者来说具有很好的学习价值。

    java学习系统(经典例题,完数,九九乘法表,百鸡问题等详细解答,精简代码)

    Java学习系统是一个专门为Java初学者和进阶者设计的资源集合,它包含了各种经典编程例题的详细解析,以及一些有趣的数学问题的编程实现,如完数问题、九九乘法表和百鸡问题等。这些例子是学习Java语言的重要实践部分...

    给出指定整数范围[a,b]内所有的完数的程序

    求出指定整数范围[a,b]内所有的完数的C++程序

    python完数的编程代码.doc

    总的来说,Python提供了灵活的编程环境来处理完数问题,但要注意对于大范围的搜索,需要采取适当的优化措施来提高效率。以上所述的优化策略可以根据实际需求进行选择和组合,以适应不同的计算场景。

    习题4-4-1完数.zip

    通过解决完数问题,我们可以锻炼逻辑思维,学习如何有效地遍历、计算和检查数字的特性,这些都是编程中不可或缺的能力。同时,通过阅读和理解源代码,我们可以学习到如何组织代码,以及如何利用编程工具进行项目管理...

    c语言典型问题处理方法小结.docx

    C语言典型问题处理方法小...本文总结了C语言中的一些典型问题的处理方法,包括循环问题、数论问题、完数问题、字符串问题、算法问题和枚举问题等。这些问题的解决可以帮助程序员更好地理解C语言的编程思想和算法设计。

    用C++语言实现完数求法

    ### 使用C++实现完数求法 ...通过对给定代码的详细分析,我们不仅了解了完数的基本概念和数学性质,还掌握了如何使用C++高效地解决问题的方法。未来还可以探索更多高级技术和数学理论来进一步优化和完善算法。

    算法设计与分析实验报告统计数字问题.pdf

    "算法设计与分析实验报告统计数字问题" 算法设计与分析实验报告统计数字问题实验名称统计数字问题评分实验日期年月日指导教师姓名专业班级学号,旨在掌握算法的计算复杂性概念、掌握算法渐近复杂性的数学表述、掌握...

    C语言之经典初级代码,初学者适用

    这个代码示例展示了如何使用循环结构和数组来解决完数问题。通过使用数组和循环结构,我们可以找到所有的完数。 知识点: * 循环结构(for循环) * 数组声明和操作 * 完数算法 5. 数组旋转问题 这个代码示例展示...

    C#中实现1到100的完数

    5. **优化与效率问题**:为了提高算法效率,内层循环只需运行到 `a` 的一半(`c=a/2`),这是因为如果存在一个大于 `a/2` 的因子,那么必然存在一个对应的因子小于 `a/2`。 #### 完善后的代码示例 ```csharp using...

    千以内的完数判断求和

    通过深入分析完数的定义和实际编程实现,我们不仅可以加深对数学概念的理解,还能锻炼编程技巧,特别是如何高效地处理数值问题。这对于初学者来说,是一个很好的学习案例,既包含了基本的数学原理,又涉及了实用的...

    求完数的源码

    完数在数学上是指一个正整数,它的所有真因数(即除了它自身以外的因数)之和等于它本身。例如,6是第一个完数,因为6的真因数有1、2和3,它们相加起来正好是6(1 + 2 + 3 = 6)。在编程中,我们可以通过编写特定的...

    算法分析与设计课程中的完美数算法

    在计算机科学领域,算法是解决问题的关键,而算法分析与设计是理解这些算法效率、性能以及优化策略的核心课程。"完美数"是算法学习中的一个经典主题,它涉及到数学和计算机科学的交叉点。本篇文章将深入探讨完美数的...

    查找1到n的完数(c语言版)

    根据给定的C语言代码和描述,我们可以详细探讨与“查找1到n的完数”相关的...对于初学者而言,这是一个很好的学习示例,帮助他们理解如何用编程解决数学问题,同时也提醒他们在编写更复杂程序时需考虑的性能优化策略。

    C语言课程设计报告 27柏凯元.docx

    题目涵盖了多种类型的算法问题,如整除问题、求和问题、回文数问题和完数问题。例如: 1. **整除问题**:寻找满足特定整除条件的数的个数或求和。 2. **求和问题**:计算数列或特定条件下的数的和,直到达到特定...

    如何判断完数

    完数的概念在数学中具有一定的理论价值,而在编程领域,它是一个有趣的计算问题,可以用来锻炼算法思维和程序设计能力。 要编写一个程序来判断一个数是否为完数,我们首先需要了解基础的因数分解概念。在编程中,这...

Global site tag (gtag.js) - Google Analytics