欧拉计划问题十二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分钟左右,两个小时,回头看看,发现我自己真是很执着,没有任何的技巧,硬算出来的,希望能抛砖引玉!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值