首页 > 代码库 > Eulerproblem-12 for python
Eulerproblem-12 for python
def ext12():
"""
三角形数序列是由对自然数的连加构造成的。所以第七个三角形数是1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 。那么三角形数序列中的
前十个是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55 。。。
下面是我们列出来的前7个三角形数的约数:
1 : 1
3 : 1, 3
6 : 1, 2, 3
10 : 1, 2, 5, 10
15 : 1, 3, 5, 10
21 : 1, 3, 7, 21
28 : 1, 2, 4, 7 ,14, 28
观察10、15、28这几个数的除数,我们可以发现后面一半的除数正好等于该三角数除以前面一半除数,因此我们只需要尝试到int(sqrt(n))
就可以了。需要注意的地方是如果三角数正好是一个完全平方数,那么除数的数量只能计算1个。
"""
count = 0
n = 1
while count <= 500:
count = 1
n += 1
for i in range(1, int(tri(n) ** 0.5) + 1):
if not tri(n) % i:
count += 2
if int(tri(n) ** 0.5) == tri(n) ** 0.5:
count -= 1
print n, tri(n)
def ext13():
from math import sqrt
n = 0
counter = 0
while counter <= 500:
counter = 1
n += 1
for i in range(1, int(sqrt(tri(n))) + 1): # 从1尝试到int(sqrt(tri(n)))
if not tri(n) % i:
counter += 2
if int(sqrt(tri(n))) == sqrt(tri(n)):
counter -= 1
# print counter
print n, tri(n)
"""
三角形数序列是由对自然数的连加构造成的。所以第七个三角形数是1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 。那么三角形数序列中的
前十个是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55 。。。
下面是我们列出来的前7个三角形数的约数:
1 : 1
3 : 1, 3
6 : 1, 2, 3
10 : 1, 2, 5, 10
15 : 1, 3, 5, 10
21 : 1, 3, 7, 21
28 : 1, 2, 4, 7 ,14, 28
观察10、15、28这几个数的除数,我们可以发现后面一半的除数正好等于该三角数除以前面一半除数,因此我们只需要尝试到int(sqrt(n))
就可以了。需要注意的地方是如果三角数正好是一个完全平方数,那么除数的数量只能计算1个。
"""
count = 0
n = 1
while count <= 500:
count = 1
n += 1
for i in range(1, int(tri(n) ** 0.5) + 1):
if not tri(n) % i:
count += 2
if int(tri(n) ** 0.5) == tri(n) ** 0.5:
count -= 1
print n, tri(n)
def ext13():
from math import sqrt
n = 0
counter = 0
while counter <= 500:
counter = 1
n += 1
for i in range(1, int(sqrt(tri(n))) + 1): # 从1尝试到int(sqrt(tri(n)))
if not tri(n) % i:
counter += 2
if int(sqrt(tri(n))) == sqrt(tri(n)):
counter -= 1
# print counter
print n, tri(n)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。