欧拉计划问题十二matlab实现

Problem 12 :

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?

思路 : 

据题意,三角数是由自然数迭代相加而产生的,比如第七个三角数28 = 1 + 2 + 3 + 4 + 5 + 6 + 7,而其有1,2,4,7,14,28等6个除数,现在题目想让我们求除数大于500个的三角数是什么?

我的思路还是迭代,比如说给你一个三角数,就让该三角数在for回圈里进行循环,从1开始除,若能被整除,则让除数个数加1,一直除到本身,若除数个数小于500,则除数个数清零,产生新的三角数,再进入循环,计算的数据量也是非常大,思路就是直接法破解!

tic
a = 0;  %lteration triangle number
k = 1;  %number pointer
t = 1;  %the first triangle number
i = 0;  %the nuber of divisors
while i < 500
    for j = 1:t
        if mod(t,j) == 0
            i = i + 1;
        end
    end
    if i < 500
        i = 0;
        k = k + 1;
        a = 1:k;
        t = sum(a);
    else
        disp(t);
        break
    end
end
t
toc

结果 :76576500

小结 :

这个方法也是暴力破解,我还是先摆一张图片让大家感受一下:

程序运行了7447.447333秒,共计124分钟左右,两个小时,回头看看,发现我自己真是很执着,没有任何的技巧,硬算出来的,希望能抛砖引玉!

猜你喜欢

转载自blog.csdn.net/qq_38910271/article/details/83041822