|

Să se verifice dacă două numere naturale n şi m introduse de la tastatură (m>=n) pot fi termeni consecutivi ai şirului lui Fibonacci, fără a se calcula termenii şirului. 4

(Indicație. Se execută operația inversă, de determinare a termenilor precedenti: iniţializarea, cu a3<-m, a2<-n, a1<-m-n, şi generarea, cu a3<-a2, a2<-a1 şi a1<-a3-a2, cât timp a1>0; dacă a3=a2=1, m şi n sunt termeni consecutivi ai şirului lui Fibonacci.)

#include <iostream>

using namespace std;

int main() {

    // Citim n si m de la tastatura

    int n, m;

    cout << „Introduceti n si m: „;

    cin >> n >> m;

    // Initializam a3, a2 si a1

    int a3 = m;

    int a2 = n;

    int a1 = m – n;

    // Generam termenii precedenti

    while (a1 > 0) {

        a3 = a2;

        a2 = a1;

        a1 = a3 – a2;

    }

    // Verificam daca m si n sunt termeni consecutivi ai sirului lui Fibonacci

    if (a2 == n && a3 == m) {

        cout << n << ” si ” << m << ” sunt termeni consecutivi ai sirului lui Fibonacci.”;

    } else {

        cout << n << ” si ” << m << ” nu sunt termeni consecutivi ai sirului lui Fibonacci.”;

    }

    return 0;

}

Programul citeste de la tastatura numerele n si m, initializeaza termenii a3, a2 si a1 conform indicatiei din enunt, si genereaza termenii precedenti pana cand a1 devine negativ. Apoi, se verifica daca n si m sunt termeni consecutivi ai sirului lui Fibonacci prin compararea valorilor a2 si a3 cu n si m.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *