欧拉习题12

该博客探讨了项目Euler第12题,涉及等差数列求和及数的因数个数。博主分享了使用MATLAB和Python解决这个问题的代码,寻找第一个拥有超过五百个因数的三角数。MATLAB代码通过计算每个三角数的因数个数并判断是否超过500,而Python代码则检查每个三角数的平方根范围内的因数数量。最终,代码找到了满足条件的第一个三角数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目见:https://projecteuler.net/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?

这个题目涉及到两个知识点:一个是等差数列的求和公式,另外一个是一个数的约数个数公式,MATLAB和Python的实现分别用了两种不同的思路

MATLAB代码

clear;clc;close all
sum(1:find(arrayfun(@(i)prod(accumarray(factor(sum(1:i))',1)+1),...
    1:1.5e4)>500,1))

Python代码

import sys
import math

t = 1
while True:
    s = t*(t+1)//2
    if sum([1 for i in range(1,math.floor(math.sqrt(s))) if s%i==0]) > 250:
        break
    t += 1


 
print(s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值