Números D – Part 27

Número D es un número N > 3 tal que N divide k^(n-2)-k para todo k con mcd(k, n) = 1, 1<k<n.
 

9, 15, 21, 33, 39, 51, 57, 63, 69, 87, 93…. 
 

Comprobar si un número es un número D

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

Entrada: N = 9 
Salida: Sí 
Explicación: 
9 es un número D ya que divide todos los números 
2^7-2, 4^7-4, 5^7-5, 7^7-7 y 8^7- 8 y 
2, 4, 5, 7, 8 son primos relativos a n.
Entrada: N = 16 
Salida: No 
 

Enfoque: dado que el Número D es un número N > 3 tal que N divide k^(n-2)-k para todo k con mcd(k, n) = 1, 1<k<n. Entonces, en un ciclo de k de 2 a n-1, verificaremos si mcd de N y k es 1 o no. Si es 1, verificaremos si k ^ (n-2)-k es divisible por N o no .Si no es divisible devolveremos falso. Por último devolveremos verdadero.
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 find the N-th
// icosikaipentagon number
int isDNum(int n)
{
    // number should be
    // greater than 3
    if (n < 4)
        return false;
     
    int numerator, hcf;
     
    // Check every k in range 2 to n-1
    for (int k = 2; k <= n; k++)
    {
        numerator = pow(k, n - 2) - k;
        hcf = __gcd(n, k);
    }
     
    // condition for D-Number
    if (hcf == 1 && (numerator % n) != 0)
        return false;
     
    return true;
}
 
// Driver Code
int main()
{
    int n = 15;
    int a = isDNum(n);
    if (a)
        cout << "Yes";
    else
        cout << "No";
}
 
// This code is contributed by Ritik Bansal

Java

// Java implementation for the
// above approach
import java.util.*;
 
class GFG{
 
// Function to find the N-th
// icosikaipentagon number
static boolean isDNum(int n)
{
     
    // Number should be
    // greater than 3
    if (n < 4)
        return false;
     
    int numerator = 0, hcf = 0;
     
    // Check every k in range 2 to n-1
    for(int k = 2; k <= n; k++)
    {
       numerator = (int)(Math.pow(k, n - 2) - k);
       hcf = __gcd(n, k);
    }
     
    // Condition for D-Number
    if (hcf == 1 && (numerator % n) != 0)
        return false;
     
    return true;
}
 
static int __gcd(int a, int b)
{
    return b == 0 ? a : __gcd(b, a % b);    
}
 
// Driver Code
public static void main(String[] args)
{
    int n = 15;
    boolean a = isDNum(n);
     
    if (a)
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by Amit Katiyar

Python3

# Python3 implementation
# for the above approach
 
import math
   
# Function to find the N-th
# icosikaipentagon number
def isDNum(n):
    # number should be
        # greater than 3
    if n < 4:
        return False
 
    # Check every k in range 2 to n-1
    for k in range(2, n):
        numerator = pow(k, n - 2) - k
        hcf = math.gcd(n, k)
 
        # condition for D-Number
        if(hcf ==1 and (numerator % n) != 0):
            return False
    return True
 
# Driver code
n = 15
if isDNum(n):
    print("Yes")
else:
    print("No")

C#

// C# implementation for the
// above approach
using System;
class GFG{
 
// Function to find the N-th
// icosikaipentagon number
static bool isDNum(int n)
{
     
    // Number should be
    // greater than 3
    if (n < 4)
        return false;
     
    int numerator = 0, hcf = 0;
     
    // Check every k in range 2 to n-1
    for(int k = 2; k <= n; k++)
    {
        numerator = (int)(Math.Pow(k, n - 2) - k);
        hcf = __gcd(n, k);
    }
     
    // Condition for D-Number
    if (hcf == 1 && (numerator % n) != 0)
        return false;
     
    return true;
}
 
static int __gcd(int a, int b)
{
    return b == 0 ? a : __gcd(b, a % b);    
}
 
// Driver Code
public static void Main(String[] args)
{
    int n = 15;
    bool a = isDNum(n);
     
    if (a)
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code contributed by Princi Singh

Javascript

<script>
// Javascript implementation for the
// above approach
 
 
    // Function to find the N-th
    // icosikaipentagon number
    function isDNum( n) {
 
        // Number should be
        // greater than 3
        if (n < 4)
            return false;
 
        let numerator = 0, hcf = 0;
 
        // Check every k in range 2 to n-1
        for ( k = 2; k <= n; k++) {
            numerator = parseInt( (Math.pow(k, n - 2) - k));
            hcf = __gcd(n, k);
        }
 
        // Condition for D-Number
        if (hcf == 1 && (numerator % n) != 0)
            return false;
 
        return true;
    }
 
    function __gcd( a, b) {
        return b == 0 ? a : __gcd(b, a % b);
    }
 
    // Driver Code
      
        let n = 15;
        let a = isDNum(n);
 
        if (a)
            document.write("Yes");
        else
            document.write("No");
 
 
// This code contributed by Rajput-Ji
 
</script>
Producción: 

Yes

 

Complejidad temporal: O(1)  
Referencia : OEIS
 

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 *