【Python入門基礎】斐波那契、迴文數、完美數、水仙花數及素數實例

斐波那契數列

      斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用。

eg.輸出斐波那契數列的前20個數

a = 0
b = 1
for _ in range(20):
    a, b = b, a + b
    print(a, end=' ')

說明:Python中下劃線的5種意義

       end=' '的意義:print默認是打印一行,結尾加換行,end=' '末尾不換行,加空格,這樣print函數不會在字符串末尾添加一個換行符,而是添加一個空字符串,表示這個語句還沒有結束。

 迴文數

      迴文數是指將一個正整數從左往右排列和從右往左排列值一樣的數。

eg.判斷迴文數

num = int(input('請輸入一個正整數: '))
temp = num
num2 = 0
while temp > 0:
    num2 *= 10
    num2 += temp % 10
    temp //= 10
if num == num2:
    print('%d是迴文數' % num)
else:
    print('%d不是迴文數' % num)

說明:更多運算符可見常見運算符。

完美數

      完美數是除了自身外其他所有因子的和正好等於這個數本身的數。

      例:6=1+2+3,28=1+2+4+7+14等。

eg.找出1~9999之間所有的完美數

import math

for num in range(1, 10000):
    result = 0
    for factor in range(1, int(math.sqrt(num)) + 1):
        if num % factor == 0:
            result += factor
            if factor > 1 and num // factor != factor:
                result += num // factor
    if result == num:
        print(num)

水仙花數

      水仙花數是各位數的立方和等於這個數本身,例153=1**3+5**3+3**3等。(**爲指數運算符)

eg.找出100~999之間的所有水仙花數

for num in range(100, 1000):
    low = num % 10
    mid = num // 10 % 10
    high = num // 100
    if num == low ** 3 + mid ** 3 + high ** 3:
        print(num)

素數

eg.找出2~99之間的素數

import math

for num in range(2, 100):
    is_prime = True
    for factor in range(2, int(math.sqrt(num)) + 1):
        if num % factor == 0:
            is_prime = False
            break
    if is_prime:
        print(num, end=' ')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章