Tìm số Fibonacci lớn nhất là nguyên tố và nhỏ hơn M

1 Like

Viết hàm tính số Fibbonaci trước đi! Mọi thứ bắt đầu từ đó!

3 Likes

Chép - dán mã lên đây! Không chụp hình!


Xem ra bạn làm ổn đấy, kết quả đúng không bạn?
Lưu ý: 2<M<2000000000 nên chỉ cần dùng int (MAX_INT = 2,147,483,647) là đủ.

Rút ngắn bằng cách:

  • Không cần lưu mảng, chỉ cần 3 giá trị (x, y, z chẳng hạn) để lưu cho a[i], a[i-1], và a[i-2]. Vẫn có thể giảm xuống còn 2.
  • Kiểm tra số nguyên tố ngay sau khi tính được số Fibbonaci, gán vào biến tạm. Khi kết thúc vòng lặp, giá trị hiện có của biến tạm là kết quả.
3 Likes

Tự nhiên thấy hay hay, làm thẻ spoil kiểu gì nhỉ.

...
def fibonacci_prime(n):
    def prime(num):
        for i in range(2, num//2):
            if not num%i:
                return False
        return True
    
    result = -1
    a = 0
    b = 1
    c = a + b
    while c + b < n:
        a = b
        b = c
        c = a+b
        if prime(c):
            result = c
    return result
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?