#三角數
#一定數目的點或圓在等距離的排列下可以形成一個等邊三角形，這樣的數被稱為三角數。
#圖片來源：維基百科
#比如10個點可以組成一個等邊三角形，因此10是一個三角數。
#一開始的10個三角形數是1、3、6、10、15、21、28、36、45、55
#T(1)=1
#T(2)=1+2=3
#T(3)=1+2+3=6
#T(4)=1+2+3+4=10
#T(5)=1+2+3+4+5=15
#T(6)=1+2+3+4+5+6=21
#T(7)=1+2+3+3+4+5+6+7=28
#利用等差數列總和公式推出三角數第n項T(n)=(n+1)n/2
#在三角數列中28是第一個擁有超過5個因數(1,2,4,7,14,28，共6個)
#【最後目標】
#求第一個超過500個因數的三角數。

#三角數列
def T(n):
    return n*(n+1)//2

#取後公因數 集合
def factors(n):
    result= set()
    for i in range(1,int(n**0.5)+1):
        div ,mod = divmod(n,i)
        if (mod==0):
            result= result |{i,div}
    return result

i=100

while True:
    Tvalue= T(i)
    if len(factors(Tvalue))>500:
        break
    i = i +1
print(i , T(i) , len(factors(Tvalue)) )
