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>
Yes
Complejidad temporal: O(1)
Referencia : OEIS