Informatică, întrebare adresată de Ionicaaaaaaa, 8 ani în urmă

Să se scrie un program C++ care să citească de la tastatură un număr natural x și să verifice dacă acest număr este termen din șirul lui Fibonacci.
Vă implor, am nevoie urgent.
Dau 50 de puncte, fără răspunsuri neserioase ca dau raport. ​

Răspunsuri la întrebare

Răspuns de lucaciucandrei
3

#include <iostream>

#include <cmath>

using namespace std;

int patr_perf(int x){

int s=sqrt(x);

return(s*s==x);

}

int fib(int n){

return patr_perf(5*n*n+4)||patr_perf(5*n*n-4);

}

int main(){

   int x;

   cin>>x;

   if(fib(x)==1)

       cout<<"Da";

   else

       cout<<"Nu";

   return 0;

}

Răspuns de Zicun
2

// O alta varianta mai simpla

#include <iostream>

#include <cmath>

#include <stdlib.h>

using namespace std;

int main()

{

int a,b,c,x;

cin>>x;

a=0;

b=1;

c=0;

   while(true)

      {

           cout<<a;

           c=a+b;

            a=b;

            b=c;

            if(x==a)

        {

           cout<<"Numarul"<<x<<"este un termen din sirul lui Fibonacci";

           break;

         }

                if(x<a)

              { break;   // acest if este folosit pentru ca programul sa nu

              }              //ruleze la infinit dupa ce a trecut de x

   }

}


Zicun: Multumesc pentru coronita, am modificat programul astfel incat sa nu mai continue sa-l caute pe x dupa ce a x < a
lucaciucandrei: sunt destul de sigur ca nu e mai simpla deloc :))
lucaciucandrei: nici eficienta nu e, dar ma rog
Alte întrebări interesante