Tuesday, November 19, 2024
Google search engine
HomeData Modelling & AICheck if a M-th fibonacci number divides N-th fibonacci number

Check if a M-th fibonacci number divides N-th fibonacci number

Given two numbers M and N, the task is to check if the M-th and N-th Fibonacci numbers perfectly divide each other or not.
Examples: 

Input: M = 3, N = 6 
Output: Yes 
F(3) = 2, F(6) = 8 and F(6) % F(3) = 0 
Input: M = 2, N = 9 
Output:  Yes

A naive approach will be to find the N-th and M-th Fibonacci numbers and check if they are perfectly divisible or not. 
An efficient approach is to use the Fibonacci property to determine the result. If m perfectly divides n, then Fm also perfectly divides Fn, else it does not.
Exception: When N is 2, it is always possible as Fibo2 is 1, which divides every other Fibonacci number. 
Below is the implementation of the above approach: 

C++




// C++ program to check if
// M-th fibonacci divides N-th fibonacci
#include <bits/stdc++.h>
using namespace std;
 
void check(int n, int m)
{
    // exceptional case for F(2)
    if (n == 2 || m == 2 || n % m == 0) {
        cout << "Yes" << endl;
    }
    // if none of the above cases,
    // hence not divisible
    else {
        cout << "No" << endl;
    }
}
 
// Driver Code
int main()
{
    int m = 3, n = 9;
    check(n, m);
 
    return 0;
}


Java




// Java program to check
// if M-th fibonacci
// divides N-th fibonacci
import java.io.*;
 
class GFG
{
static void check(int n, int m)
{
    // exceptional case for F(2)
    if (n == 2 || m == 2 ||
        n % m == 0)
    {
        System.out.println( "Yes");
    }
     
    // if none of the above cases,
    // hence not divisible
    else
    {
        System.out.println( "No");
    }
}
 
// Driver Code
public static void main (String[] args)
{
    int m = 3, n = 9;
    check(n, m);
}
}
 
// This code is contributed
// by anuj_67.


Python 3




# Python 3 program to
# check if M-th fibonacci
# divides N-th fibonacci
 
def check(n, m):
 
    # exceptional case for F(2)
    if (n == 2 or m == 2 or
        n % m == 0) :
        print( "Yes" )
     
    # if none of the above
    # cases, hence not divisible
    else :
        print( "No" )
 
# Driver Code
m = 3
n = 9
check(n, m)
 
# This code is contributed
# by Smitha


C#




// C# program to check
// if M-th fibonacci
// divides N-th fibonacci
using System;
 
class GFG
{
static void check(int n, int m)
{
    // exceptional case for F(2)
    if (n == 2 || m == 2 ||
        n % m == 0)
    {
         Console.WriteLine( "Yes");
    }
     
    // if none of the above cases,
    // hence not divisible
    else
    {
        Console.WriteLine( "No");
    }
}
 
// Driver Code
public static void Main ()
{
    int m = 3, n = 9;
    check(n, m);
}
}
 
// This code is contributed
// by anuj_67.


PHP




<?php
// PHP program to check
// if M-th fibonacci
// divides N-th fibonacci
 
function check($n, $m)
{
    // exceptional case for F(2)
    if ($n == 2 || $m == 2 ||
        $n % $m == 0)
    {
        echo "Yes" , "\n";
    }
     
    // if none of the above cases,
    // hence not divisible
    else
    {
        echo "No" ," \n";
    }
}
 
// Driver Code
$m = 3; $n = 9;
check($n, $m);
 
// This code is contributed
// by anuj_67.
?>


Javascript




<script>
 
// Javascript program to check if
// M-th fibonacci divides N-th fibonacci
 
function check(n, m)
{
    // exceptional case for F(2)
    if (n == 2 || m == 2 || n % m == 0) {
        document.write("Yes" + "<br>");
    }
    // if none of the above cases,
    // hence not divisible
    else {
        document.write("No" + "<br>");
    }
}
 
// Driver Code
  
    let m = 3, n = 9;
    check(n, m);
 
// This code is contributed by Mayank Tyagi
 
</script>


Output: 

Yes

 

Time Complexity: O(1).
Auxiliary Space: O(1) as using constant variables
 

Approach 2: Dynamic Programming:

The Approach first initializes two variables “a” and “b” with values 0 and 1 respectively, and then uses a for loop to calculate the N-th Fibonacci number by adding the previous two numbers in the sequence. It then stores this value in the variable “n_fib”.

Next, the program initializes “a” and “b” again with values 0 and 1 respectively, and uses another for loop to calculate the M-th Fibonacci number in the same way. It stores this value in the variable “m_fib”.

Here is the code:

C++




// C++ program to check if
// M-th fibonacci divides N-th fibonacci
#include <bits/stdc++.h>
using namespace std;
 
void check(int n, int m)
{
    int a = 0, b = 1, c;
    for (int i = 2; i <= n; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    int n_fib = b;
     
    a = 0, b = 1;
    for (int i = 2; i <= m; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    int m_fib = b;
     
    // exceptional case for F(2)
    if (n == 2 || m == 2 || n_fib % m_fib == 0) {
        cout << "Yes" << endl;
    }
    // if none of the above cases,
    // hence not divisible
    else {
        cout << "No" << endl;
    }
}
 
// Driver Code
int main()
{
    int m = 3, n = 6;
    check(n, m);
 
    return 0;
}


Java




import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        int m = 3, n = 6;
        check(n, m);
    }
 
    public static void check(int n, int m) {
        int a = 0, b = 1, c;
        for (int i = 2; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        int n_fib = b;
 
        a = 0;
        b = 1;
        for (int i = 2; i <= m; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        int m_fib = b;
 
        // exceptional case for F(2)
        if (n == 2 || m == 2 || n_fib % m_fib == 0) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}


Python3




# Python program to check if
# M-th fibonacci divides N-th fibonacci
def check(n, m):
    a, b, c = 0, 1, 0
    for i in range(2, n + 1):
        c = a + b
        a = b
        b = c
    n_fib = b
 
    a, b = 0, 1
    for i in range(2, m + 1):
        c = a + b
        a = b
        b = c
    m_fib = b
 
    # exceptional case for F(2)
    if n == 2 or m == 2 or n_fib % m_fib == 0:
        print("Yes")
    # if none of the above cases,
    # hence not divisible
    else:
        print("No")
 
# Driver Code
m = 3
n = 6
check(n, m)
 
# This code is contributed by Susobhan Akhuli


C#




using System;
 
public class GFG {
    public static void Main(string[] args) {
        int m = 3, n = 6;
        Check(n, m);
    }
    // check Function dynamic programming approach
    public static void Check(int n, int m) {
        int a = 0, b = 1, c;
        for (int i = 2; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        int n_fib = b;
 
        a = 0;
        b = 1;
        for (int i = 2; i <= m; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        int m_fib = b;
 
        // exceptional case for F(2)
        if (n == 2 || m == 2 || n_fib % m_fib == 0) {
            Console.WriteLine("Yes");
        } else {
            Console.WriteLine("No");
        }
    }
}


Javascript




function check(n, m) {
    let a = 0, b = 1, c;
    for (let i = 2; i <= n; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    let nFib = b;
 
    a = 0;
    b = 1;
    for (let i = 2; i <= m; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    let mFib = b;
 
    // exceptional case for F(2)
    if (n === 2 || m === 2 || nFib % mFib === 0) {
        console.log("Yes");
    } else {
        console.log("No");
    }
}
 
let n = 6, m = 3;
check(n, m);


Output

Yes

Time Complexity: O(n+m), where n and m are the indices of the Fibonacci numbers to be checked.
Auxiliary Space: O(1) as using only constant variables.
 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments