Computer >> Máy Tính >  >> Lập trình >> lập trình C

Một cách hiệu quả để kiểm tra xem số Fibonacci thứ n có phải là bội số của 10 hay không?

Ở đây chúng ta sẽ thấy một cách hiệu quả để kiểm tra xem số hạng Fibonacci thứ n có phải là bội số của 10 hay không. Giả sử các số hạng Fibonacci là {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987}. Vì vậy, đây là thứ 15 (Đếm từ 0) Số hạng Fibonacci chia hết cho 10. Đối với 16, nó sẽ trả về true.

Một phương pháp đơn giản nhất là tạo số Fibonacci theo số hạng nhất định và kiểm tra xem nó có chia hết cho 10 hay không? Nhưng giải pháp này không tốt, vì nó sẽ không hoạt động với các điều khoản lớn hơn.

Một cách tiếp cận tốt khác như dưới đây -

Số hạng Fibonacci - 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987

Các số này (được đánh dấu là chữ in đậm) chia hết cho 2. Và khoảng của chúng là 3 số hạng Fibonacci. Tương tự, hãy kiểm tra điều đó -

Số hạng Fibonacci:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987

Mọi số hạng thứ 5 đều chia hết cho 5. Bây giờ LCM của 3 và 5 là 15. Vì vậy, chúng ta có thể nói rằng cứ 15 th Các số hạng Fibonacci chia hết cho 10.

Hãy để chúng tôi xem thuật toán để có được ý tưởng.

Thuật toán

fiboDivTen (thuật ngữ)

Begin
   if term is divisible by 15, then
      return true
   end if
   return false
End

Ví dụ

#include<iostream>
using namespace std;
bool fiboDivTen(int term) {
   if(term % 15 == 0){
      return true;
   }
   return false;
}
int main() {
   int term = 45;
   if (fiboDivTen(term))
      cout << "Divisible";
   else
      cout << "Not Divisible";
}

Đầu ra

Divisible