问题描述如下:
“三角数为符合如下标准:
第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
分享到:
相关推荐
5. 三角形的等边关系:第4题中,由于(a-b)(b-c)(c-a)=0,根据零因子定律,至少有一个因子为零,从而推断出三角形可能为等腰三角形。 6. 三角形的周长:第1题、第14题、第15题以及第16题都涉及到三角形周长的计算,...
第一部分. 热身 1. 为什么使用shell 编程 2. 带着一个Sha-Bang 出发(Sha-Bang 指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. ...
- 输出符合条件的第一个解。 #### 7. 处理整数除法 - **知识点**: 整数除法运算和条件判断。 - **实现思路**: - 输入整数a和b。 - 使用条件语句判断a能否被b整除。 - 输出相应的算式和结果。 #### 8. 输出九九...
本程序的目标是在1到1000的范围内寻找所有的完数,即一个数等于它的所有真因子之和。 **程序分析:** - 定义了一个静态数组`k[10]`用于存储每个完数的因子。 - 外层循环遍历2至999的所有整数。 - 内层循环用于找出...
第一个程序展示了如何使用双重循环来生成九九乘法表。该程序使用了for循环来实现, outer loop控制行数,inner loop控制列数。printf函数用于输出结果。 2. 兔子繁殖问题 第二个程序解决了经典的兔子繁殖问题。该...
- 第一行星号最少,最后一行星号最多,中间逐渐增加。 #### 知识点二十:斐波那契数列的前20项 - **描述**:计算斐波那契数列的前20项。 - **实现思路**: - 使用循环生成数列。 - 记录前两个数,并在每次循环中...
**问题描述**:有n个人围成一圈,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **解题思路**: - 使用循环队列模拟报数过程。 - 每次删除报数为3的人,直至圈中仅剩...
输入一个正整数n (1),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号,...
第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量...
在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所...
程序通过遍历1到1000,对每个数检查其因子之和是否等于数本身,如果是则输出该完数及其因子。 5. **矩阵旋转** - 第五个程序实现了4x4矩阵的逆时针旋转90度。首先输入原始矩阵,然后通过交换元素位置实现旋转。...
第一个程序是输出9*9口诀的程序。该程序使用了两个for循环来控制行和列, printf函数来输出结果。程序的主要思想是使用变量i和j来控制行和列,然后使用printf函数来输出结果。 第二个程序是兔子的规律问题。该程序...
3.7 一个特殊的三角级数 3.8 Fourier级数的积分 3.9 一个基本的收敛定理 3.1 0具有递降系数的级数 3.1 1 具有递降系数的级数 (续) 3.1 2 Gibbs现象 第4章 Fourier级数的收敛性 4.1 引言 4.2 Fourier级数的收敛...
6. **象限性质**:根据象限规则,正弦和正切在第一象限为正,余弦在第一和第四象限为正,第二和第三象限为负。 7. **诱导公式**:通过角度的加减可以转换三角函数的值,例如sin(90°+θ) = cosθ,cos(90°+θ) = -...
这篇文档是福建省仙游县竹庄初级中学2014-2015学年八年级数学下学期的第一次月考试题,包含了选择题、填空题和解答题。题目涉及了多项数学概念,主要围绕代数、几何和三角函数等核心知识点。 1. 最简二次根式的选择...
- 题目13是一个实际问题,利用直角三角形的性质求解。 - 题目14涉及菱形的面积计算,中点和垂直线的应用。 - 题目15考查正方形和中点的性质,结合周长和对角线长度解决问题。 - 题目16是求最短路径问题,利用...
- 通过遍历2到根号n之间的所有整数来判断一个数是否为素数。 - 如果在该范围内找到了可以整除n的数,则n不是素数;否则,n是素数。 #### 3. 水仙花数 - **知识点**: 水仙花数是指一个三位数,其各位数字立方和...
21. 第二十一题是关于自然数的排列,分别求出第10行第7个数和87的位置。 22. 第二十二题涉及立方和的规律,如13+23+33+43=102,需要找出下一个等式。 这些问题都需要运用数学思维,特别是逻辑推理和模式识别能力,...
这份文档是黑龙江省大庆市铁人中学2020-2021学年高一下学期4月第一次月考的数学试题及答案,主要涵盖了高中阶段的数学知识,包括向量、几何、三角函数等多个核心概念。 1. **向量平行与共线**:题目涉及到向量平行...