(12)三角數
一定數目的點或圓在等距離的排列下可以形成一個等邊三角形,這樣的數被稱為三角數。
圖片來源:維基百科比如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個因數的三角數。
練習1:集合
集合(sets)是一組無序且沒有重複的元素。大括號或 set() 函式都可以用來創建集合。(注意:要創建一個空的集合,必須使用set()而不是{})
1 2 3 4 5 6 7 8 | a = set('abracadabra')
b = set('alacazam')
print(a) #印出集合a
print(b) #印出集合b
print(a-b) #差集:在集合a中但不在集合b中的元素集合
print(a|b) #聯集:在集合a或在集合b中的元素集合
print(a&b) #交集:在集合a且在集合b中的元素集合
print(a^b) #在集合a或集合b中,但不同時存在兩個集合
|
練習2:找出第100項三角數
1 2 3 4 | def T(number):
return number * (number + 1) // 2
print(T(100))
|
練習3:找出100的所有因數及其因數個數
1 2 3 4 5 6 7 8 9 10 11 | def factors(number):
result = set()
for i in range(1, int(number ** 0.5) + 1):
div, mod = divmod(number, i)
if mod == 0 :
result = result | {i, div}
return result
factor_set = factors(100)
print(factor_set)
print(len(factor_set))
|
練習4:找出100的因數中,除了100本身之外最大的因數。
1 2 3 4 5 6 7 8 | number = 100
factor = number - 1
while True:
mod = number % factor
if mod == 0:
break
factor = factor-1
print(factor)
|
本單元課程自2018.4.23日起已被瀏覽 1298 次