`
zhou_zhihao
  • 浏览: 57202 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

问题12-求因子个数超过500个的第一个三角数

J# 
阅读更多

问题描述如下:

三角数为符合如下标准:

第7个数为1+2+3+4+...+7=28,前几个三角数为:1,,3,6,10,15,21,28......

让我们来看一下他们的因子:

1:1

3:1,3

6:1,2,3,6

10:1,2,5,10

15:1,3,5,15

21:1,3,7,21

28:1,2,4,7,14,28

因子个数超过5的第一个三角数为28,求因子个数超过500个的第一个三角数?

 

代码实现如下:

 

/**
	 * 获得n的因子的个数
	 * 
	 * @param n
	 * @return
	 */
	private static int getFactorNumber(int triangleNumber) {
		int result = 0;
		for (int i = 1; i <= triangleNumber; i++) {
			if (triangleNumber % i == 0) {
				result++;
			}
		}
		return result;
	}

	/**
	 * 获得因子个数超过n个的三角数 此数符合某个标准如下: 如第7个数为1+2+3+4+5+6+7=28,
	 * 前几个数为1,3,6,10,15,21,28,36...
	 * t(n)=n(n+1)/2
	 * @param n
	 * @return
	 */
	private static int getTriangleNumber(int n) {
		int triangleNumber = 0;
		int j = 1;
		int number=0;
		while (number <= n) {
			triangleNumber = j * (j + 1) / 2;
			number = getFactorNumber(triangleNumber);
			System.out.println(number);
			System.out.println(triangleNumber);
			j++;
		}
		return triangleNumber;
	}

 

运行以上程序,要很长时间才能够得到结果76576500。

 

进行一些优化,

 

/**
	 * 获得n的因子的个数
	 * 
	 * @param n
	 * @return
	 */
	private static int getFactorNumber1(int triangleNumber) {
		int result = 0;
		double max = Math.sqrt(triangleNumber);
		for (int i = 1; i <= max; i++) {
			if (triangleNumber % i == 0) {
				result += 2;
			}
			if (i * i == triangleNumber) {//如果i是triangleNumber的平方根,总数减一
				result--;
			}
		}
		return result;
	}

 

还有一些其他的方式来做,可以做一个提示,

1=2^0+3^0+5^0+7^0...+p^0,因子个数为(0+1)*(0+1)*(0+1)...*(0+1)=1

3= 2^0+3^1+5^0+7^0...+p^0,因子个数为(0+1)*(1+1)*(0+1)...*(0+1)=2

6=2^1+3^1+5^0+7^0...+p^0,因子个数为(1+1)*(1+1)*(0+1)...*(0+1)=4

...

28 = 2^2+3^0+5^0+7^1...+p^0,因子个数为(2+1)*(0+1)*(0+1)*(1+1)...*(0+1)=6

...

t(n) = 2^a1+3^a2+4^a3+...+p^ap,因子个数为(a1+1)*(a2+1)*(a3+1)*(a4+1)...*(ap+1)=n

 

到此结束。

 

请不吝赐教。

@anthor ClumsyBirdZ

 

分享到:
评论

相关推荐

    七年级数学下册第四章三角形1认识三角形第2课时三角形的三边关系练习1新版北师大版201912041100

    5. 三角形的等边关系:第4题中,由于(a-b)(b-c)(c-a)=0,根据零因子定律,至少有一个因子为零,从而推断出三角形可能为等腰三角形。 6. 三角形的周长:第1题、第14题、第15题以及第16题都涉及到三角形周长的计算,...

    Advanced Bash-Scripting Guide <>

    第一部分. 热身 1. 为什么使用shell 编程 2. 带着一个Sha-Bang 出发(Sha-Bang 指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. ...

    沈阳建筑大学 810C语言程序设计

    - 输出符合条件的第一个解。 #### 7. 处理整数除法 - **知识点**: 整数除法运算和条件判断。 - **实现思路**: - 输入整数a和b。 - 使用条件语句判断a能否被b整除。 - 输出相应的算式和结果。 #### 8. 输出九九...

    C语言必背18个经典程序.pdf

    本程序的目标是在1到1000的范围内寻找所有的完数,即一个数等于它的所有真因子之和。 **程序分析:** - 定义了一个静态数组`k[10]`用于存储每个完数的因子。 - 外层循环遍历2至999的所有整数。 - 内层循环用于找出...

    C语言必背12个经典程序

    第一个程序展示了如何使用双重循环来生成九九乘法表。该程序使用了for循环来实现, outer loop控制行数,inner loop控制列数。printf函数用于输出结果。 2. 兔子繁殖问题 第二个程序解决了经典的兔子繁殖问题。该...

    编程算法练习--没事的时候练练

    - 第一行星号最少,最后一行星号最多,中间逐渐增加。 #### 知识点二十:斐波那契数列的前20项 - **描述**:计算斐波那契数列的前20项。 - **实现思路**: - 使用循环生成数列。 - 记录前两个数,并在每次循环中...

    26道基础算法题.pdf

    **问题描述**:有n个人围成一圈,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **解题思路**: - 使用循环队列模拟报数过程。 - 每次删除报数为3的人,直至圈中仅剩...

    上海电机学院C语言实训答案

    输入一个正整数n (1),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号,...

    Linux高级bash编程

    第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量...

    算法导论(part1)

    在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所...

    C++必背18个经典程序;.docx

    程序通过遍历1到1000,对每个数检查其因子之和是否等于数本身,如果是则输出该完数及其因子。 5. **矩阵旋转** - 第五个程序实现了4x4矩阵的逆时针旋转90度。首先输入原始矩阵,然后通过交换元素位置实现旋转。...

    C语言18个经典程序C语言18个经典程序.docx

    第一个程序是输出9*9口诀的程序。该程序使用了两个for循环来控制行和列, printf函数来输出结果。程序的主要思想是使用变量i和j来控制行和列,然后使用printf函数来输出结果。 第二个程序是兔子的规律问题。该程序...

    《数学·统计学系列:三角级数论》作者:(英)哈代 ,(英)罗戈辛斯基 著,徐瑞云 ,王斯雷 译 出版时间:2013年

    3.7 一个特殊的三角级数 3.8 Fourier级数的积分 3.9 一个基本的收敛定理 3.1 0具有递降系数的级数 3.1 1 具有递降系数的级数 (续) 3.1 2 Gibbs现象 第4章 Fourier级数的收敛性 4.1 引言 4.2 Fourier级数的收敛...

    第一章三角函数单元测试题及答案精选.doc

    6. **象限性质**:根据象限规则,正弦和正切在第一象限为正,余弦在第一和第四象限为正,第二和第三象限为负。 7. **诱导公式**:通过角度的加减可以转换三角函数的值,例如sin(90°+θ) = cosθ,cos(90°+θ) = -...

    八年级数学下学期第一次月考试题(无答案) 试题-2.doc

    这篇文档是福建省仙游县竹庄初级中学2014-2015学年八年级数学下学期的第一次月考试题,包含了选择题、填空题和解答题。题目涉及了多项数学概念,主要围绕代数、几何和三角函数等核心知识点。 1. 最简二次根式的选择...

    湖北省鄂州市鄂城区2015-2016学年八年级数学下学期第二次月考试题新人教版.doc

    - 题目13是一个实际问题,利用直角三角形的性质求解。 - 题目14涉及菱形的面积计算,中点和垂直线的应用。 - 题目15考查正方形和中点的性质,结合周长和对角线长度解决问题。 - 题目16是求最短路径问题,利用...

    Java50道经典题目

    - 通过遍历2到根号n之间的所有整数来判断一个数是否为素数。 - 如果在该范围内找到了可以整除n的数,则n不是素数;否则,n是素数。 #### 3. 水仙花数 - **知识点**: 水仙花数是指一个三位数,其各位数字立方和...

    数列、数阵练习精选(附详细讲解)可用.pdf

    21. 第二十一题是关于自然数的排列,分别求出第10行第7个数和87的位置。 22. 第二十二题涉及立方和的规律,如13+23+33+43=102,需要找出下一个等式。 这些问题都需要运用数学思维,特别是逻辑推理和模式识别能力,...

    黑龙江省大庆市铁人中学2020-2021学年高一下学期4月第一次月考数学试题 含答案.doc

    这份文档是黑龙江省大庆市铁人中学2020-2021学年高一下学期4月第一次月考的数学试题及答案,主要涵盖了高中阶段的数学知识,包括向量、几何、三角函数等多个核心概念。 1. **向量平行与共线**:题目涉及到向量平行...

Global site tag (gtag.js) - Google Analytics