Una forma eficiente de verificar si el número n-ésimo de Fibonacci es múltiplo de 10

Nos dan una variable n, necesitamos encontrar si el número de Fibonacci será múltiplo de 10 o no. 
Ejemplos: 
 

Input : 15
Output : Yes

Input : 17
Output : No

Un método simple es encontrar el n-ésimo número de Fibonacci y verificar si es divisible por 10 o no.
 

C++

// A simple C++ program to check if
// n-th Fibonacci number is multiple
// of 10.
#include<bits/stdc++.h>
 
int fibonacci(int n)
{
    int a = 0, b = 1, c;
    if (n <= 1)
        return n;
    for (int i = 2; i<= n; i++)
    {
        c = a + b;
        a = b;
        b = c;
    }
    return c;
}
 
// Returns true if n-th Fibonacci number
// is multiple of 10.
bool isMultipleOf10(int n)
{
    int f = fibonacci(30);
    return  (f % 10 == 0);
}
 
// Driver code
int main()
{
    int n = 30;
    if (isMultipleOf10(n))
        printf("Yes\n");
    else
        printf("No\n");
}

Java

// A simple Java program to check if
// n-th Fibonacci number is multiple
// of 10.
class Fibonacci
{
    static int fibonacci(int n)
    {
        int a = 0;
        int b=1;
        int c=0;
        if (n <= 1)
            return n;
         
        for (int i = 2; i<= n; i++)
        {
            c = a + b;
            a = b;
            b = c;
        }
         
        return c;
    }
     
    // Returns true if n-th Fibonacci number
    // is multiple of 10.
    static boolean isMultipleOf10(int n)
    {
        int f = fibonacci(30);
        return  (f % 10 == 0);
    }
     
    // main function
    public static void main (String[] args)
    {
        int n = 30;
        if (isMultipleOf10(n))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

Python 3

# A simple Python 3 program to check if
# n-th Fibonacci number is multiple
# of 10.
 
def fibonacci(n):
 
    a = 0
    b = 1
    if (n <= 1):
        return n
    for i in range(2, n + 1):
     
        c = a + b
        a = b
        b = c
     
    return c
 
# Returns true if n-th Fibonacci
# number is multiple of 10.
def isMultipleOf10(n):
    f = fibonacci(30)
    return (f % 10 == 0)
 
# Driver code
if __name__ =="__main__":
     
    n = 30
    if (isMultipleOf10(n)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by ita_c

C#

// A simple C# program to check if
// n-th Fibonacci number is multiple
// of 10.
using System;
 
class GFG {
     
    static int fibonacci(int n)
    {
        int a = 0;
        int b = 1;
        int c = 0;
        if (n <= 1)
            return n;
         
        for (int i = 2; i<= n; i++)
        {
            c = a + b;
            a = b;
            b = c;
        }
         
        return c;
    }
     
    // Returns true if n-th Fibonacci
    // number is multiple of 10.
    static bool isMultipleOf10(int n)
    {
        int f = fibonacci(30);
        return (f % 10 == 0);
    }
     
    // main function
    public static void Main ()
    {
        int n = 30;
         
        if (isMultipleOf10(n))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code contribute by parshar.

PHP

<?php
 
// A simple PHP program to
// check if n-th Fibonacci
// number is multiple of 10.
 
function fibonacci($n)
{
    $a = 0; $b = 1; $c;
    if ($n <= 1)
        return $n;
    for ($i = 2; $i<= $n; $i++)
    {
        $c = $a + $b;
        $a = $b;
        $b = $c;
    }
    return $c;
}
 
// Returns true if n-th Fibonacci
// number is multiple of 10.
function isMultipleOf10($n)
{
    $f = fibonacci(30);
    return ($f % 10 == 0);
}
 
// Driver code
    $n = 30;
     
    if (isMultipleOf10($n))
        echo "Yes\n";
    else
        echo "No\n";
 
// This code is contributed by ajit.
?>

Javascript

<script>
 
// A simple Javascript program to
// check if n-th Fibonacci
// number is multiple of 10.
function fibonacci(n)
{
    let a = 0;
    let b = 1;
    let c;
    if (n <= 1)
        return n;
    for (let i = 2; i<= n; i++)
    {
        c = a + b;
        a = b;
        b = c;
    }
    return c;
}
 
// Returns true if n-th Fibonacci
// number is multiple of 10.
function isMultipleOf10(n)
{
    let f = fibonacci(30);
    return (f % 10 == 0);
}
 
// Driver code
    let n = 30;    
    if (isMultipleOf10(n))
        document.write("Yes<br>");
    else
        document.write("No\n");
 
// This code is contributed by _saurabh_jaiswal.
</script>

Producción: 
 

Yes

Método eficiente:
la solución anterior puede no funcionar si n es muy grande, entonces no es posible encontrar el número de Fibonacci. Además, podemos verificar sin encontrar el número de Fibonacci mirando el patrón. ¡Veamos cómo!
Si el número es divisible por 10, entonces debe ser divisible por 5 y 2 ambos. 
Múltiplos de 2 en series de Fibonacci: 
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 …. 
Los números que se muestran en negrita son divisibles por 2. Tras una observación cuidadosa, encontramos que cada tercer número es divisible por 2.
Múltiplos de 5 en la serie de Fibonacci: 
0 1 1 2 35 8 13 21 34 55 89 144 233 377 610 987 1597 2584 ……
Los números que se muestran en negrita son divisibles por 5. En una observación cuidadosa, encontramos que cada quinto número es divisible por 5.
Ahora MCM de 3 y 5 es 15. Entonces, cada 15-ésimo número de Fibonacci será divisible por 10. Entonces, no necesitamos encontrar el número de Fibonacci, solo tenemos que verificar si n es divisible por 15 o no. A continuación se muestra la implementación.
 

C++

// A simple C++ program to check if
// n-th Fibonacci number is multiple
// of 10.
#include<bits/stdc++.h>
 
// Returns true if n-th Fibonacci number
// is multiple of 10.
bool isMultipleOf10(int n)
{
    return  (n % 15 == 0);
}
 
int main()
{
    int n = 30;
    if (isMultipleOf10(n))
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}

Java

// A simple Java program to check if
// n-th Fibonacci number is multiple
// of 10.
class Fibonacci
{
    // Returns true if n-th Fibonacci number
    // is multiple of 10.
    static boolean isMultipleOf10(int n)
    {
        if(n%15 == 0)
            return  true;
         
        return false;   
    }
     
    // main function
    public static void main (String[] args)
    {
        int n = 30;
        if (isMultipleOf10(n))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

Python3

# A simple Python 3 program to check if
# n-th Fibonacci number is multiple
# of 10.
 
# Returns true if n-th Fibonacci number
# is multiple of 10.
def isMultipleOf10(n):
 
    return (n % 15 == 0)
 
# Driver Code
n = 30
 
if (isMultipleOf10(n)):
    print("Yes");
else:
    print("No");
 
# This code is contributed
# by Akanksha Rai

C#

// A simple C# program to check if
// n-th Fibonacci number is multiple
// of 10.
using System;
 
class GFG {
 
    // Returns true if n-th Fibonacci number
    // is multiple of 10.
    static bool isMultipleOf10(int n)
    {
        if(n % 15 == 0)
            return  true;
          
        return false;   
    }
      
    // main function
    public static void Main ()
    {
        int n = 30;
        if (isMultipleOf10(n))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is contributed by nitin mittal.

PHP

<?php
// A simple PHP program to
// check if n-th Fibonacci
// number is multiple of 10.
 
// Returns true if n-th
// Fibonacci number is
// multiple of 10.
function isMultipleOf10($n)
{
    return ($n % 15 == 0);
}
 
// Driver Code
$n = 30;
if (isMultipleOf10($n))
    echo "Yes\n";
else
    echo "No\n";
     
// This code is contributed
// by akt_mit
?>

Javascript

// A simple Javascript program to
// check if n-th Fibonacci
// number is multiple of 10.
 
// Returns true if n-th
// Fibonacci number is
// multiple of 10.
function isMultipleOf10(n)
{
    return (n % 15 == 0);
}
 
// Driver Code
let n = 30;
if (isMultipleOf10(n))
    document.write("Yes<br>");
else
    document.write("No<br>");
     
// This code is contributed by _saurabh_jaiswal

Producción: 
 

Yes

Este código se ejecuta en tiempo O(1). 
Este artículo es una contribución de Aditya Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *