D Number is a number N > 3 such that N divides k^(n-2)-k for all k with gcd(k, n) = 1, 1<k<n.
9, 15, 21, 33, 39, 51, 57, 63, 69, 87, 93….
Check if a number is a D-Number
Given a number N, the task is to check if N is an D Number or not. If N is an D Number then print “Yes” else print “No”.
Examples:
Input: N = 9
Output: Yes
Explanation:
9 is a D-number since it divides all the numbers
2^7-2, 4^7-4, 5^7-5, 7^7-7 and 8^7-8, and
2, 4, 5, 7, 8 are relatively prime to n.
Input: N = 16
Output: No
Approach: Since D Number is a number N > 3 such that N divides k^(n-2)-k for all k with gcd(k, n) = 1, 1<k<n. So in a loop of k from 2 to n-1, we will check if gcd of N and k is 1 or not.If it’s 1 then we will check if k^(n-2)-k is divisible by N or not.If not divisible we will return false.At last we will return true.
Below is the implementation of the above approach:
// 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 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 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# 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 |
<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
Time Complexity: O(1)
Reference: OEIS