问题描述如下:
“三角数为符合如下标准:
第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. 为什么使用shell 编程 2. 带着一个Sha-Bang 出发(Sha-Bang 指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. ...
程序3:判断这是一年中的第几天? 3 程序4:判断整数大小 4 程序5:斐波那契数列 5 程序6:水仙花数 6 程序7:数字求和 6 程序8:平方根 7 程序9:if语句 8 程序10:阿姆斯特朗数 8 程序11:输出指定范围的素数...
第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量...
在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所...
输入一个正整数n (1),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号,...
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=1+2+3.编程 找出1000以内的所有完数。 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次...
10.3输入10个整数,将其中最小的数与第一个数对换,把最大的一个数与最后一个对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 74 10.4有n个整数,使其前面各数顺序向后移m个位置,最后m个数...
leetcode三角形打印 java基础练习题 1.检查是否为素数(素数:该数除了1和它本身以外不再有其他的因数的数被...8.题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有
文中以长三角第一批16个城市为研究对象,选取了具有代表性的11个指标,数据来自2015年上海市、江苏省、浙江省统计年鉴。运用因子分析的方法对该区域各个城市的经济发展水平做定量分析。结果显示:根据综合得分,上海、...
40个Java算法与数组方面的源码实例集,这些代码都是比较简单,觉得很实用,...例如6=1+2+3 ,找出1000以内的所有完数、求s=a aa aaa aaaa aa...a的值,其中a是一个数字、输入星期几的第一个字母来判断一下是星期几等。
循环结构习题:求一个数除以9的商等于它各位数字的平方和 86%(497/575) 14% 2020-4-23 1084 循环结构习题:求最优方案 50%(419/844) 53% 2020-4-23 1085 函数习题:计算公式s=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…+n)的...
1.输出所有的“水仙花数”,水仙花数是指一个三位数,这个数的各位数字的立方和就是该数本身。 2.将一个正整数分解质因数,如:18=2*3*3;...24.如果一个数恰好等于它的因子之和,则叫“完数”求1000以内所有完数;
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。 【程序19】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10...
2.一个数如果恰好等于他的因子之和,这个数就称为“完数”,例如6=1+2+3。编程 找出1000以内的所有完数 3.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求他在第10次落地时,共经过多少米?第10...
第12章 设计一个灵活的Camera类 第13章 地形绘制基础\t 第14章 粒子系统\t 第15章 拾取\t 第Ⅳ部分 着色器和效果 第16章 高级着色语言(HLSL)入门\t 第17章 顶点着色器入门\t 第18章 像素着色器入门\t 第19章 效果...
mulGXF1 用两点割线法的第一种形式求非线性方程组的一个根 mulGXF2 用两点割线法的第二种形式求非线性方程组的一个根 mulVNewton 用拟牛顿法求非线性方程组的一组解 mulRank1 用对称秩1算法求非线性方程组的一个根 ...
mulGXF1 用两点割线法的第一种形式求非线性方程组的一个根 mulGXF2 用两点割线法的第二种形式求非线性方程组的一个根 mulVNewton 用拟牛顿法求非线性方程组的一组解 mulRank1 用对称秩1算法求非线性方程组的一个根 ...
在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所...
第一章 回溯 1.1马拦过河卒 1.2出栈序列统计 1.3算24点 1.4冗余依赖 1.5走迷宫 1.6 单向双轨道 1.7.组合的输出 1.8售货员的难题 1.9驾车旅游 1.10关路灯 第二章 递规与递推 2.1遍历问题 2.2产生数 ...