The sequence of triangle numbers is generated by adding the natural numbers. So the 7th
triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
Let us list the factors of the first seven triangle numbers:
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
We can see that 28 is the first triangle number to have over five divisors.
What is the value of the first triangle number to have over five hundred divisors?
翻译:
自然数累加生成的数叫三角数(不知道能不能像这样翻译)。如:第7个三解数为1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
前十个序列应该是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
列出前七个三角数的因数如下:
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
可以看到28是第一个因数超过5个的三角数
第一个因数超过500个的三角数是多少?
关键:
a=(b^i)*(c^j)*(d^k)*.....(b的i次方乘以c的j次方....,b,c,d....为质数);
则a的因数的个数为:
count=(i+1)*(j+1)*(k+1).....
可以证明上式是成立的.
C代码如下:
#include <stdio.h>
int getFactorCount(int num){/*计算因数个数*/
int count=1;/**因数的个数**/
int i=2;/**遍历变量*/
int tmp = 1;/**相同质因数个数临时存放变量**/
int flag=0;/**标识上一个质因数的值**/
while(!(num<i)){/***计算出A的质因数***/
if(num%i==0){/**如果成立则i应该是mun的一个质因数**/
num=num/i;
if(flag!=i){/**当前质因数的值与上一个是否一样**/
count*=tmp;
tmp=2;
flag=i;
if(num==1)
count*=tmp;
}
else
tmp++;
}else
i++;
}
return count;
}
int main(char * args){
int a=2;
int count=0;
do{
count = getFactorCount(a*(a+1)/2);
a++;
}while(count<500);
printf("%d\n",(a-1)*a/2);/***因为多执行了一步a++所以所求值应为(a-1)*a/2***/
}
结果:76576500
总结:
开始的时候想了很多方法都是想怎么求因数,但没有把关键的问题 质因数与因数的关系分析清楚,走了很多弯路。像这一类题还是数学功底比程序功底要重要一些。
相关推荐
全部在linux下运行通过并得到结果,因为是个人所做,所以不保证是最优结果,仅供交流学习 因为是个人联系所做,所以代码中没有注释,不过我相信只要你真的有去思考题目也是能知道我为什么这样做 ...
一些c语言训练题,有难度,想提高的同学可以试试
例 题 程序文件 功 能 例2-1 xScript.m 脚本文件示例 例2-2 xFunction.m 用function声明函数及函数调用方法 例2-3 x2Dplot.m 调用数据M文件,并绘制二维曲线图 Data_x2Dplot.m 数据M文件的生成 例...
例 题 程序文件 功 能 例2-1 xScript.m 脚本文件示例 例2-2 xFunction.m 用function声明函数及函数调用方法 例2-3 x2Dplot.m 调用数据M文件,并绘制二维曲线图 Data_x2Dplot.m 数据M文件的生成 例...
4.在欧拉公式V-E+F-L=2(B-G)中,B表示( ) [单选题] * 计算机辅助设计与制造含答案全文共19页,当前为第1页。 A 顶点数 B 内环数 C边数 D 不相连物体个数(正确答案) 5.具有较好的局部控制性的曲线是( ) ...
《算法导论(原书第3版)》选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在it专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。...
本书可作为高等院校相关专业的数学教材,也可供科学和工程技术人员参考使用。 目录 第1章复变函数与解析函数(1) 1.1复数(2) 1.1.1复数的概念(2) 1.1.2复数的表示法(2) 1.1.3复数的运算(4) 1.1.4复球面(7) 1.2复变...
欧拉计划 而且我也意识到设计我自己的数据结构(尽管它们已经存在)对于专业的软件开发工程师来说是必不可少的。 他们是: 哈希表 队列 随机队列 链表 双链表 编写大量的算法挑战,不仅是为了技术面试,还可以帮助我...
2013全国大学生数学建模B题matlab代码.rar 802.11a OFDM MATLAB仿真代码!(推荐).rar MATLAB DCT水印源程序代码.rar MATLAB GUI 实例.rar matlab GUI实例.rar MATLAB GUI实现动态画图曲线的源程序代码.rar matlab.rar...
2013全国大学生数学建模B题matlab代码.rar 802.11a OFDM MATLAB仿真代码!(推荐).rar MATLAB DCT水印源程序代码.rar MATLAB GUI 实例.rar matlab GUI实例.rar MATLAB GUI实现动态画图曲线的源程序代码.rar matlab.rar...