Ngôn ngữ Python - Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố

Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố

Đề bài 1

Bài tập Python: Viết chương trình liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố trong Python. N là số nguyên dương được nhập từ bàn phím.

Lời giải

import math
 
"""
 * Tính số fibonacci thứ n
 *
 * @param n: chỉ số của số fibonacci tính từ 0
 *           vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
 * @return số fibonacci thứ n
"""
def fibonacci(n):
    if (n < 0):
        return -1;
    elif (n == 0 or n == 1):
        return n;
    else:
        return fibonacci(n - 1) + fibonacci(n - 2);
 
 
"""
 * check so nguyen to
 * 
 * @author viettuts.vn
 * @param n: so nguyen duong
 * @return true la so nguyen so, 
 *         false khong la so nguyen to
"""
def isPrimeNumber(n):
    # so nguyen n < 2 khong phai la so nguyen to
    if (n < 2):
        return False;
 
    # check so nguyen to khi n >= 2
    squareRoot = int(math.sqrt(n));
    for i in range(2, squareRoot + 1):
        if (n % i == 0):
            return False;
    return True;
 
 
"""
 *  Chương trình liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.
 *  Với n được nhập từ bàn phím.
 *  
 * @author viettuts.vn
"""
n = int(input("Nhập số nguyên dương n = "));
print ("Tất cả các số fibonacci nhỏ hơn", n, "và nguyên tố:");
i = 0;
fin = fibonacci(i);
while(fin < n):
    fin = fibonacci(i);
    if (isPrimeNumber(fin)):
        print(fin)
    i = i + 1;

Kết quả:

Nhập số nguyên dương n = 100
Tất cả các số fibonacci nhỏ hơn 100 và nguyên tố:
2
3
5
13
89