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.