欧拉项目(python练习)problem 45
生活随笔
收集整理的這篇文章主要介紹了
欧拉项目(python练习)problem 45
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding:utf8 -*-import sys
from math import sqrt#題目設置
'''三角數,五角數和六角數分別通過以下公式定義:三角數 Tn=n(n+1)/2 1, 3, 6, 10, 15, ...
五角數 Pn=n(3n?1)/2 1, 5, 12, 22, 35, ...
六角數 Hn=n(2n?1) 1, 6, 15, 28, 45, ...
可以證實 T285 = P165 = H143 = 40755.找出這之后的下一個既是五角數又是六角數的三角數。'''#解題思路:n值相同情況下,六角數數值最大,所以從第144個六角數開始尋找,判斷之后的六角數是否為三角數和五角數,找到后返回即可class RequiredTriangleNumber(): #定義了一個找到要求的三角數的類def __init__(self):passdef judge_whether_triangle(self , number): #定義了一個方法,判斷一個數字是否為三角數,通過反解n判斷是否為整數即可if ((sqrt(8 * number + 1) - 1) / 2) % 1 == 0: return Truedef judge_whther_pentagonal(self , number): #同上,判斷是否為五角數if ((sqrt(24 * number + 1) + 1) / 6) % 1 == 0: return Truedef find_next_number(self , hexagonal_number_position): #主方法,尋找下一個數,參數為從這個n值的六角數開始尋找while(True):hexagonal_number = hexagonal_number_position * (2 * hexagonal_number_position - 1)if self.judge_whether_triangle(hexagonal_number) and self.judge_whther_pentagonal(hexagonal_number):return hexagonal_numberhexagonal_number_position = hexagonal_number_position + 1if __name__ == "__main__":required_triangle_number = RequiredTriangleNumber()print required_triangle_number.find_next_number(144)
運行結果:1533776805
總結
以上是生活随笔為你收集整理的欧拉项目(python练习)problem 45的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中移位运算
- 下一篇: 一个正经的前端学习 开源 仓库(每日更新