Given an integer **N**, the task is to find the **N ^{th}** Fibonacci number.

Input:N = 13Output:144

Input:N = 19Output:2584

**Approach:** The **N ^{th}** Fibonacci number can be found using the roots of the pell’s equation. Pells equation is generally of the form

**(x**.

^{2}) – n(y^{2}) = |1|Here, consider

**y**. Also, taken positive (+1) in the right-hand side.

^{2}= x, n = 1Now the equation becomes

**x**which is same as

^{2}– x = 1**x**.

^{2}– x – 1 = 0Here,

**{x = (p**is termed as

^{i}– q^{i}) / (p – q)}**N**term of the fibonaccci series where

^{th}**i = n – 1**and

**(p, q)**are the roots of the pell’s equation.

To find roots of general quadratic equation (a*x

^{2}+ b*x + c = 0).

x1 = [-b + math.sqrt(b^{2}– 4*a*c)] / 2*a

x2 = [-b – math.sqrt(b^{2}– 4*a*c)] / 2*a

i.e.

p = (1 + math.sqrt(5)) / 2

q = (1 – math.sqrt(5)) / 2

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to return the ` `// nth fibonacci number` `int` `fib(` `int` `n)` `{` ` ` `// Assign roots of the pell's ` ` ` `// equation to p and q` ` ` `double` `p = ((1 + ` `sqrt` `(5)) / 2);` ` ` `double` `q = ((1 - ` `sqrt` `(5)) / 2);` ` ` `int` `i = n - 1;` ` ` `int` `x = (` `int` `) ((` `pow` `(p, i) - ` ` ` `pow` `(q, i)) / (p - q));` ` ` `return` `x;` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `int` `n = 5;` ` ` `cout << fib(n);` `}` ` ` `// This code is contributed by PrinciRaj1992` |

## Java

`// Java implementation of the approach` `class` `GFG ` `{` ` ` `// Assign roots of the pell's ` `// equation to p and q` `static` `double` `p = ((` `1` `+ Math.sqrt(` `5` `)) / ` `2` `);` `static` `double` `q = ((` `1` `- Math.sqrt(` `5` `)) / ` `2` `);` ` ` `// Function to return the ` `// nth fibonacci number` `static` `int` `fib(` `int` `n)` `{` ` ` `int` `i = n - ` `1` `;` ` ` `int` `x = (` `int` `) ((Math.pow(p, i) - ` ` ` `Math.pow(q, i)) / (p - q));` ` ` `return` `x;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args) ` `{` ` ` `int` `n = ` `5` `;` ` ` `System.out.println(fib(n));` `}` `} ` ` ` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 implementation of the approach` `import` `math` ` ` `# Assign roots of the pell's ` `# equation to p and q` `p ` `=` `(` `1` `+` `math.sqrt(` `5` `)) ` `/` `2` `q ` `=` `(` `1` `-` `math.sqrt(` `5` `)) ` `/` `2` ` ` `# Function to return the ` `# nth fibonacci number` `def` `fib(n):` ` ` `i ` `=` `n ` `-` `1` ` ` `x ` `=` `(p` `*` `*` `i ` `-` `q` `*` `*` `i) ` `/` `(p ` `-` `q)` ` ` `return` `int` `(x)` ` ` `# Driver code` `n ` `=` `5` `print` `(fib(n))` |

## C#

`// C# implementation of the approach` `using` `System;` ` ` `class` `GFG` `{` ` ` `// Assign roots of the pell's ` `// equation to p and q` `static` `double` `p = ((1 + Math.Sqrt(5)) / 2);` `static` `double` `q = ((1 - Math.Sqrt(5)) / 2);` ` ` `// Function to return the ` `// nth fibonacci number` `static` `int` `fib(` `int` `n)` `{` ` ` `int` `i = n - 1;` ` ` `int` `x = (` `int` `) ((Math.Pow(p, i) - ` ` ` `Math.Pow(q, i)) / (p - q));` ` ` `return` `x;` `}` ` ` `// Driver code` `static` `public` `void` `Main ()` `{` ` ` `int` `n = 5;` ` ` `Console.Write(fib(n));` `}` `} ` ` ` `// This code is contributed by @ajit..` |

**Output:**

3

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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**