Números de Cunningham

El número de Cunningham es un número N de la forma  a^{b} \pm 1     , donde a, b >= 2.
Pocos números de Cunningham son: 
 

3, 5, 7, 8, 9, 10, 15, 17, 24, 26, 28… 
 

Comprobar si N es un número de Cunningham

Dado un número N , la tarea es comprobar si N es un número de Cunningham o no. Si N es un número de Cunningham, escriba «Sí» , de lo contrario, escriba «No» .
Ejemplos: 
 

Entrada: N = 126 
Salida: Sí 
Explicación: 
126 = 5^3+1
Entrada: N = 16 
Salida: No 
 

Enfoque: La idea es resolver la ecuación en la forma deseada de modo que sea fácil comprobar si el número es un número de Cunningham o no. 
 

// Cunningham Numbers are the 
// which can be represented as 
=> N = a^{b} \pm  1
=> N \pm 1 = a^{b}

Por lo tanto, si  N + 1     N - 1     se puede expresar en la forma de     , entonces el número es el Número de Cunningham.
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation for the
// above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if a number
// can be expressed as a^b.
bool isPower(int a)
{
    if (a == 1)
        return true;
 
    for (int i = 2; i * i <= a; i++) {
        double val = log(a) / log(i);
        if ((val - (int)val) < 0.00000001)
            return true;
    }
 
    return false;
}
 
// Function to check if N is a
// Cunningham number
bool isCunningham(int n)
{
    return isPower(n - 1) ||
           isPower(n + 1);
}
 
// Driver Code
int main()
{
    // Given Number
    int n = 126;
 
    // Function Call
    if (isCunningham(n))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

Java

// Java implementation for the above approach
import java.util.*;
 
class GFG{
 
// Function to check if a number
// can be expressed as a^b.
static boolean isPower(int a)
{
    if (a == 1)
        return true;
 
    for(int i = 2; i * i <= a; i++)
    {
       double val = Math.log(a) / Math.log(i);
       if ((val - (int)val) < 0.00000001)
           return true;
    }
    return false;
}
 
// Function to check if N is a
// Cunningham number
static boolean isCunningham(int n)
{
    return isPower(n - 1) ||
           isPower(n + 1);
}
 
// Driver Code
public static void main (String[] args)
{
     
    // Given Number
    int n = 126;
 
    // Function Call
    if (isCunningham(n))
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by Ritik Bansal

Python3

# Python3 implementation for the
# above approach
import math
 
# Function to check if a number
# can be expressed as a^b.
def isPower(a):
     
    if (a == 1):
        return True
     
    i = 2
    while(i * i <= a):
        val = math.log(a) / math.log(i)
        if ((val - int(val)) < 0.00000001):
            return True
        i += 1
    return False
     
# Function to check if N is a
# Cunningham number
def isCunningham(n):
    return isPower(n - 1) or isPower(n + 1)
     
# Driver Code
 
# Given Number
n = 126
 
# Function Call
if (isCunningham(n)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by shubhamsingh10

C#

// C# implementation for the
// above approach
using System;
class GFG{
     
// Function to check if a number
// can be expressed as a^b.
static bool isPower(int a)
{
    if (a == 1)
        return true;
 
    for(int i = 2; i * i <= a; i++)
    {
       double val = Math.Log(a) / Math.Log(i);
       if ((val - (int)val) < 0.00000001)
           return true;
    }
    return false;
}
 
// Function to check if N is a
// Cunningham number
static bool isCunningham(int n)
{
    return isPower(n - 1) ||
           isPower(n + 1);
}
 
// Driver Code
public static void Main (string[] args)
{
     
    // Given number
    int n = 126;
 
    // Function Call
    if (isCunningham(n))
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code is contributed by rock_cool

Javascript

<script>
// Javascript implementation for the above approach
 
    // Function to check if a number
    // can be expressed as a^b.
    function isPower( a)
    {
        if (a == 1)
            return true;
 
        for ( let i = 2; i * i <= a; i++)
        {
            let val = Math.log(a) / Math.log(i);
            if ((val - parseInt( val) < 0.00000001))
                return true;
        }
        return false;
    }
 
    // Function to check if N is a
    // Cunningham number
    function isCunningham(n)
    {
        return isPower(n - 1) || isPower(n + 1);
    }
 
    // Driver Code
      
    // Given Number
    let n = 126;
 
    // Function Call
    if (isCunningham(n))
        document.write("Yes");
    else
        document.write("No");
 
// This code is contributed by Rajput-Ji
</script>
Producción: 

Yes

 

Complejidad de tiempo: O (n 1/2 )

Espacio Auxiliar: O(1)

Referencia: https://oeis.org/A080262
 

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *