Find the next Non-Fibonacci number

Given a number N, the task is to find the next Non-Fibonacci number.

Examples:

Input: N = 4
Output: 6
6 is the next non-fibonacci number after 4

Input: N = 6
Output: 7

Approach: As the fibonacci series is given as



0, 1, 1, 2, 3, 5, 8, 13, 21, 34….

It can be observed that there does not exists any 2 consecutive fibonacci numbers. Therefore, inorder to find the next Non-Fibonacci number, the following cases arise:

  1. If N <= 3, then the next Non-Fibonacci number will be 4
  2. If N > 3, then we will check if (N + 1) is fibonacci number or not.
    • If (N + 1) is a fibonacci number then (N + 2) will be the next Non-Fibonacci number.
    • Else (N + 1) will be the answer

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to check if a
// number is perfect square
bool isPerfectSquare(int x)
{
    int s = sqrt(x);
    return (s * s == x);
}
  
// Function to check if a
// number is Fibinacci Number
bool isFibonacci(int N)
{
    // N is Fibinacci if either
    // (5*N*N + 4), (5*N*N - 4) or both
    // is a perferct square
    return isPerfectSquare(5 * N * N + 4)
           || isPerfectSquare(5 * N * N - 4);
}
  
// Function to find
// the next Non-Fibinacci Number
int nextNonFibonacci(int N)
{
  
    // Case 1
    // If N<=3, then 4 will be
    // next Non-Fibinacci Number
    if (N <= 3)
        return 4;
  
    // Case 2
    // If N+1 is Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    if (isFibonacci(N + 1))
        return N + 2;
  
    // If N+1 is Non-Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    else
        return N + 1;
}
  
// Driver code
int main()
{
    int N = 3;
    cout << nextNonFibonacci(N)
         << endl;
  
    N = 5;
    cout << nextNonFibonacci(N)
         << endl;
  
    N = 7;
    cout << nextNonFibonacci(N)
         << endl;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
import java.util.*;
  
class GFG{
   
// Function to check if a
// number is perfect square
static boolean isPerfectSquare(int x)
{
    int s = (int) Math.sqrt(x);
    return (s * s == x);
}
   
// Function to check if a
// number is Fibinacci Number
static boolean isFibonacci(int N)
{
    // N is Fibinacci if either
    // (5*N*N + 4), (5*N*N - 4) or both
    // is a perferct square
    return isPerfectSquare(5 * N * N + 4)
           || isPerfectSquare(5 * N * N - 4);
}
   
// Function to find
// the next Non-Fibinacci Number
static int nextNonFibonacci(int N)
{
   
    // Case 1
    // If N<=3, then 4 will be
    // next Non-Fibinacci Number
    if (N <= 3)
        return 4;
   
    // Case 2
    // If N+1 is Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    if (isFibonacci(N + 1))
        return N + 2;
   
    // If N+1 is Non-Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    else
        return N + 1;
}
   
// Driver code
public static void main(String[] args)
{
    int N = 3;
    System.out.print(nextNonFibonacci(N)
         +"\n");
   
    N = 5;
    System.out.print(nextNonFibonacci(N)
         +"\n");
   
    N = 7;
    System.out.print(nextNonFibonacci(N)
         +"\n");
}
}
  
// This code is contributed by 29AjayKumar

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 implementation of the approach
from math import sqrt
  
# Function to check if a
# number is perfect square
def isPerfectSquare(x):
    s = sqrt(x)
    return (s * s == x)
  
# Function to check if a
# number is Fibinacci Number
def isFibonacci(N):
  
    # N is Fibinacci if either
    # (5*N*N + 4), (5*N*N - 4) or both
    # is a perferct square
    return isPerfectSquare(5 * N * N + 4) or \
            isPerfectSquare(5 * N * N - 4)
  
# Function to find
# the next Non-Fibinacci Number
def nextNonFibonacci(N):
      
    # Case 1
    # If N<=3, then 4 will be
    # next Non-Fibinacci Number
    if (N <= 3):
        return 4
  
    # Case 2
    # If N+1 is Fibinacci, then N+2
    # will be next Non-Fibinacci Number
    if (isFibonacci(N + 1)):
        return N + 2
  
    # If N+1 is Non-Fibinacci, then N+2
    # will be next Non-Fibinacci Number
    else:
        return
  
# Driver code
if __name__ == '__main__':
    N = 3
    print(nextNonFibonacci(N))
    N = 4
    print(nextNonFibonacci(N))
  
    N = 7
    print(nextNonFibonacci(N))
      
# This code is contributed by Surendra_Gangwar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
  
class GFG{
    
// Function to check if a
// number is perfect square
static bool isPerfectSquare(int x)
{
    int s = (int) Math.Sqrt(x);
    return (s * s == x);
}
    
// Function to check if a
// number is Fibinacci Number
static bool isFibonacci(int N)
{
    // N is Fibinacci if either
    // (5*N*N + 4), (5*N*N - 4) or both
    // is a perferct square
    return isPerfectSquare(5 * N * N + 4)
           || isPerfectSquare(5 * N * N - 4);
}
    
// Function to find
// the next Non-Fibinacci Number
static int nextNonFibonacci(int N)
{
    
    // Case 1
    // If N<=3, then 4 will be
    // next Non-Fibinacci Number
    if (N <= 3)
        return 4;
    
    // Case 2
    // If N+1 is Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    if (isFibonacci(N + 1))
        return N + 2;
    
    // If N+1 is Non-Fibinacci, then N+2
    // will be next Non-Fibinacci Number
    else
        return N + 1;
}
    
// Driver code
public static void Main(String[] args)
{
    int N = 3;
    Console.Write(nextNonFibonacci(N)
         +"\n");
    
    N = 5;
    Console.Write(nextNonFibonacci(N)
         +"\n");
    
    N = 7;
    Console.Write(nextNonFibonacci(N)
         +"\n");
}
}
  
// This code is contributed by Princi Singh

chevron_right


Output:

4
6
9

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.