Find the next fibonacci number
The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding ones, starting from 0 and 1. In this article, we will explore a simple C program that finds the next Fibonacci number given a valid Fibonacci number as input.
Problem Statement
Given a valid Fibonacci number as input, the task is to find the next Fibonacci number in the sequence.
Explanation with Suitable Example: Let's take an example to understand the problem. Suppose we have the Fibonacci number 13. The next Fibonacci number after 13 in the sequence is 21. Similarly, if we have the Fibonacci number 55, the next Fibonacci number will be 89.
Pseudocode
- Start
- Define a function named next_fibonacci that takes an integer 'number' as input.
- If 'number' is less than 0, return from the function as negative Fibonacci numbers do not exist.
- Initialize a variable 'result' to store the next Fibonacci number.
- If 'number' is 0, set 'result' to 1.
- Otherwise, calculate the next Fibonacci number using the formula: round(number * ((1 + sqrt(5)) / 2)).
- Display the calculated result.
- End
Algorithm Explanation
- Start the program.
- Define the function next_fibonacci.
- Check if the input number is negative, return from the function.
- If the input number is 0, set 'result' to 1, as the next Fibonacci number after 0 is 1.
- Otherwise, calculate the next Fibonacci number using the formula: round(number * ((1 + sqrt(5)) / 2)).
- The formula uses the golden ratio to approximate the next Fibonacci number. Note that this formula assumes the given number is a valid Fibonacci number.
- Display the calculated result.
- Repeat steps 3-6 for each test case in the main function.
- End the program.
Code Solution
Here given code implementation process.
// C program
// Find the next fibonacci number
#include <stdio.h>
#include <math.h>
//Find the next fibonacci of given number
void next_fibonacci(int number)
{
if (number < 0)
{
return;
}
int result = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number * (1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = round(number * ((1 + sqrt(5)) / 2));
}
// Display the calculated result
printf("\n [%d] is next fibonacci are : %d ", number, result);
}
int main()
{
//Test case
next_fibonacci(0);
next_fibonacci(13);
next_fibonacci(55);
next_fibonacci(3);
next_fibonacci(1);
next_fibonacci(233);
return 0;
}
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
// Java program
// Find the next fibonacci number
class FibonacciNo
{
//Find the next fibonacci of given number
public void next_fibonacci(int number)
{
if (number < 0)
{
return;
}
long result = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = Math.round(number * ((1 + Math.sqrt(5)) / 2));
}
// Display the calculated result
System.out.print("\n [" + number + "] is next fibonacci are : " + result );
}
public static void main(String[] args)
{
FibonacciNo obj = new FibonacciNo();
//Test case
obj.next_fibonacci(0);
obj.next_fibonacci(13);
obj.next_fibonacci(55);
obj.next_fibonacci(3);
obj.next_fibonacci(1);
obj.next_fibonacci(233);
}
}
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
//Include header file
#include <iostream>
#include<math.h>
using namespace std;
// C++ program
// Find the next fibonacci number
class FibonacciNo
{
public:
//Find the next fibonacci of given number
void next_fibonacci(int number)
{
if (number < 0)
{
return;
}
long result = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = round(number *((1 + sqrt(5)) / 2));
}
// Display the calculated result
cout << "\n [" << number << "] is next fibonacci are : " << result;
}
};
int main()
{
FibonacciNo obj = FibonacciNo();
//Test case
obj.next_fibonacci(0);
obj.next_fibonacci(13);
obj.next_fibonacci(55);
obj.next_fibonacci(3);
obj.next_fibonacci(1);
obj.next_fibonacci(233);
return 0;
}
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
//Include namespace system
using System;
// C# program
// Find the next fibonacci number
class FibonacciNo
{
//Find the next fibonacci of given number
public void next_fibonacci(int number)
{
if (number < 0)
{
return;
}
long result = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = (long)Math.Round(number * ((1 + Math.Sqrt(5)) / 2));
}
// Display the calculated result
Console.Write("\n [" + number + "] is next fibonacci are : " + result);
}
public static void Main(String[] args)
{
FibonacciNo obj = new FibonacciNo();
//Test case
obj.next_fibonacci(0);
obj.next_fibonacci(13);
obj.next_fibonacci(55);
obj.next_fibonacci(3);
obj.next_fibonacci(1);
obj.next_fibonacci(233);
}
}
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
<?php
// Php program
// Find the next fibonacci number
class FibonacciNo
{
//Find the next fibonacci of given number
public function next_fibonacci($number)
{
if ($number < 0)
{
return;
}
$result = 0;
if ($number == 0)
{
$result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
$result = round($number * (intval((1 + sqrt(5)) / 2)));
}
// Display the calculated result
echo "\n [". $number ."] is next fibonacci are : ". $result;
}
}
function main()
{
$obj = new FibonacciNo();
//Test case
$obj->next_fibonacci(0);
$obj->next_fibonacci(13);
$obj->next_fibonacci(55);
$obj->next_fibonacci(3);
$obj->next_fibonacci(1);
$obj->next_fibonacci(233);
}
main();
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 13
[55] is next fibonacci are : 55
[3] is next fibonacci are : 3
[1] is next fibonacci are : 1
[233] is next fibonacci are : 233
// Node Js program
// Find the next fibonacci number
class FibonacciNo
{
//Find the next fibonacci of given number
next_fibonacci(number)
{
if (number < 0)
{
return;
}
var result = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = Math.round(number * ((1 + Math.sqrt(5)) / 2));
}
// Display the calculated result
process.stdout.write("\n [" + number + "] is next fibonacci are : " + result);
}
}
function main()
{
var obj = new FibonacciNo();
//Test case
obj.next_fibonacci(0);
obj.next_fibonacci(13);
obj.next_fibonacci(55);
obj.next_fibonacci(3);
obj.next_fibonacci(1);
obj.next_fibonacci(233);
}
main();
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
import math
# Python 3 program
# Find the next fibonacci number
class FibonacciNo :
# Find the next fibonacci of given number
def next_fibonacci(self, number) :
if (number < 0) :
return
result = 0
if (number == 0) :
result = 1
else :
# Formula
# (number *(1 + sqrt(5)) / 2)
# Assuming that, given number is valid fibonacci number
result = round(number * (((1 + math.sqrt(5)) / 2)))
# Display the calculated result
print("\n [", number ,"] is next fibonacci are : ", result, end = "")
def main() :
obj = FibonacciNo()
# Test case
obj.next_fibonacci(0)
obj.next_fibonacci(13)
obj.next_fibonacci(55)
obj.next_fibonacci(3)
obj.next_fibonacci(1)
obj.next_fibonacci(233)
if __name__ == "__main__": main()
Output
[ 0 ] is next fibonacci are : 1
[ 13 ] is next fibonacci are : 21
[ 55 ] is next fibonacci are : 89
[ 3 ] is next fibonacci are : 5
[ 1 ] is next fibonacci are : 2
[ 233 ] is next fibonacci are : 377
# Ruby program
# Find the next fibonacci number
class FibonacciNo
# Find the next fibonacci of given number
def next_fibonacci(number)
if (number < 0)
return
end
result = 0
if (number == 0)
result = 1
else
# Formula
# (number *(1 + sqrt(5)) / 2)
# Assuming that, given number is valid fibonacci number
result =(number * ((1 + Math.sqrt(5)) / 2)).round()
end
# Display the calculated result
print("\n [", number ,"] is next fibonacci are : ", result)
end
end
def main()
obj = FibonacciNo.new()
# Test case
obj.next_fibonacci(0)
obj.next_fibonacci(13)
obj.next_fibonacci(55)
obj.next_fibonacci(3)
obj.next_fibonacci(1)
obj.next_fibonacci(233)
end
main()
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
// Scala program
// Find the next fibonacci number
class FibonacciNo
{
//Find the next fibonacci of given number
def next_fibonacci(number: Int): Unit = {
if (number < 0)
{
return;
}
var result: Long = 0;
if (number == 0)
{
result = 1;
}
else
{
// Formula
// (number *(1 + sqrt(5)) / 2)
// Assuming that, given number is valid fibonacci number
result = Math.round(number * ((1 + Math.sqrt(5)) / 2));
}
// Display the calculated result
print("\n [" + number + "] is next fibonacci are : " + result);
}
}
object Main
{
def main(args: Array[String]): Unit = {
var obj: FibonacciNo = new FibonacciNo();
//Test case
obj.next_fibonacci(0);
obj.next_fibonacci(13);
obj.next_fibonacci(55);
obj.next_fibonacci(3);
obj.next_fibonacci(1);
obj.next_fibonacci(233);
}
}
Output
[0] is next fibonacci are : 1
[13] is next fibonacci are : 21
[55] is next fibonacci are : 89
[3] is next fibonacci are : 5
[1] is next fibonacci are : 2
[233] is next fibonacci are : 377
Resultant Output Explanation
For each test case in the main function, the program will call the next_fibonacci function with the given Fibonacci number as input and calculate the next Fibonacci number using the formula. The calculated result will be printed on the screen.
Output Explanation for Test Cases
- For the input Fibonacci number 0, the next Fibonacci number is 1.
- For the input Fibonacci number 13, the next Fibonacci number is 21.
- For the input Fibonacci number 55, the next Fibonacci number is 89.
- For the input Fibonacci number 3, the next Fibonacci number is 5.
- For the input Fibonacci number 1, the next Fibonacci number is 2.
- For the input Fibonacci number 233, the next Fibonacci number is 377.
Time Complexity of the Code
The time complexity of the code is O(1) because the next Fibonacci number is calculated directly using a simple formula without any loops or recursion. The formula involves basic arithmetic operations, which are constant time operations, making the overall time complexity constant.
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment