#include #include long long unsigned fib(long long unsigned n) { if ( n == 0 ) return 0; else if ( n == 1 ) return 1; else return (fib(n-1) + fib(n-2)); } int main (int argv, char **argc) { long long unsigned i; long long unsigned x; if (argv != 2) { printf("Please, insert a number after name of file\n"); return (0); } i = 0; while (argc[1][i] != '\0') { if (!(argc[1][i] >= '0' && argc[1][i] <= '9')) { printf("Please, insert a number of digits\n"); return (0); } i++; } x = atoll(argc[1]); if (x < 1 || x > 4611686018427387904) { printf("Please, insert a number between 1 and 2^62\n"); return (0); } i = x / 2; while (fib(i) >= x) i = i / 2; if (fib(i) == x) { printf("%llu\n", i - 1); return (0); } while (fib(i) < x) i++; printf("%llu\n", i - 1); return (0); }