# @Time : 2017/5/20 20:39
# @Author : wanyang
# @Mail :wanyangnumberone@gmail.com
# @Question:Highly divisible triangular number https://projecteuler.net/problem=12
# @Author : wanyang
# @Mail :wanyangnumberone@gmail.com
# @Question:Highly divisible triangular number https://projecteuler.net/problem=12
# @Answer :76576500
projecteuler.net 这个网站挺好的,很多很有趣的数学知识。
用到一定的数学知识,其实也比较简单,只不过不太容易想到
之前使用的是2/triangularNum,查询的范围太大,会超时,Google了一下,改进了一下范围,代码如下
from math import *
end = 1
count = 0
while True:
triangularNum = sum(i for i in range(1, end))
for j in range(1, int(sqrt(triangularNum)) + 1): # sqrt(triangularNum))必定有一个因数小于其平方根
if triangularNum % j == 0:
count += 1
end += 1
if 2 * count > 500: # 因数成对出现,只需要查找一半即可
print(triangularNum)
break
count = 0
print(triangularNum)