Number of divisors of a given number N which are divisible by K

• Difficulty Level : Medium
• Last Updated : 06 May, 2021

Given a number N and a number K. The task is to find the number of divisors of N which are divisible by K. Here K is a number always less than or equal to √(N)

Examples:

Input: N = 12, K = 3
Output: 3

Input: N = 8, K = 2
Output: 3

Simple Approach: A simple approach is to check all the numbers from 1 to N and check whether any number is a divisor of N and is divisible by K. Count such numbers less than N which satisfies both the conditions.
Below is the implementation of the above approach:

C++

 // C++ program to count number of divisors// of N which are divisible by K #include using namespace std; // Function to count number of divisors// of N which are divisible by Kint countDivisors(int n, int k){    // Variable to store    // count of divisors    int count = 0, i;     // Traverse from 1 to n    for (i = 1; i <= n; i++) {         // increase the count if both        // the conditions are satisfied        if (n % i == 0 && i % k == 0) {             count++;        }    }     return count;} // Driver codeint main(){    int n = 12, k = 3;     cout << countDivisors(n, k);     return 0;}

Java

 // Java program to count number of divisors// of N which are divisible by K import java.io.*; class GFG {    // Function to count number of divisors// of N which are divisible by K static int countDivisors(int n, int k){    // Variable to store    // count of divisors    int count = 0, i;     // Traverse from 1 to n    for (i = 1; i <= n; i++) {         // increase the count if both        // the conditions are satisfied        if (n % i == 0 && i % k == 0) {             count++;        }    }     return count;} // Driver code    public static void main (String[] args) {      int n = 12, k = 3;     System.out.println(countDivisors(n, k));    }}// This code is contributed by shashank..

Python3

 # Python program to count number# of divisors of N which are# divisible by K # Function to count number of divisors# of N which are divisible by Kdef countDivisors(n, k) :     # Variable to store    # count of divisors    count = 0     # Traverse from 1 to n    for i in range(1, n + 1) :         # increase the count if both        # the conditions are satisfied        if (n % i == 0 and i % k == 0) :             count += 1                 return count # Driver code    if __name__ == "__main__" :     n, k = 12, 3    print(countDivisors(n, k)) # This code is contributed by ANKITRAI1

C#

 // C# program to count number// of divisors of N which are// divisible by Kusing System; class GFG{     // Function to count number// of divisors of N which// are divisible by Kstatic int countDivisors(int n, int k){    // Variable to store    // count of divisors    int count = 0, i;     // Traverse from 1 to n    for (i = 1; i <= n; i++)    {         // increase the count if both        // the conditions are satisfied        if (n % i == 0 && i % k == 0)        {            count++;        }    }     return count;} // Driver codepublic static void Main (){    int n = 12, k = 3;         Console.WriteLine(countDivisors(n, k));}} // This code is contributed by Shashank



Javascript


Output
3

Time Complexity : O(N)
Efficient Approach: The idea is to run a loop from 1 to < √(N) and check whether the number is a divisor of N and is divisible by K and we will also check whether ( N/i ) is divisible by K or not. As (N/i) will also be a factor of N if i is a factor of N.
Below is the implementation of the above approach:

C++

 // C++ program to count number of divisors// of N which are divisible by K#include using namespace std; // Function to count number of divisors// of N which are divisible by Kint countDivisors(int n, int k){    // integer to count the divisors    int count = 0, i;     // Traverse from 1 to sqrt(N)    for (i = 1; i <= sqrt(n); i++)    {         // Check if i is a factor        if (n % i == 0)        {            // increase the count if i            // is divisible by k            if (i % k == 0)            {                count++;            }             // (n/i) is also a factor            // check whether it is divisible by k            if ((n / i) % k == 0)            {                count++;            }        }    }         i--;     // If the number is a perfect square    // and it is divisible by k    if ((i * i == n) && (i % k == 0))    {        count--;    }     return count;} // Driver codeint main(){    int n = 16, k = 4;     // Function Call    cout << countDivisors(n, k);    return 0;}

Java

 // Java  program to count number of divisors// of N which are divisible by Kimport java.io.*; class GFG {     // Function to count number of divisors// of N which are divisible by Kstatic int countDivisors(int n, int k){    // integer to count the divisors    int count = 0, i;     // Traverse from 1 to sqrt(N)    for (i = 1; i <= Math.sqrt(n); i++)    {         // Check if i is a factor        if (n % i == 0)        {            // increase the count if i            // is divisible by k            if (i % k == 0)            {                count++;            }             // (n/i) is also a factor            // check whether it is divisible by k            if ((n / i) % k == 0)            {                count++;            }        }    }       i--;     // If the number is a perfect square    // and it is divisible by k    if ((i * i == n) && (i % k == 0))    {        count--;    }     return count;}     // Driver code        public static void main (String[] args)    {             int n = 16, k = 4;        System.out.println( countDivisors(n, k));             }}//This Code is Contributed by akt_mit

Python 3

 # Python 3 program to count number of# divisors of N which are divisible by Kimport math # Function to count number of divisors# of N which are divisible by Kdef countDivisors(n, k):         # integer to count the divisors    count = 0     # Traverse from 1 to sqrt(N)    for i in range(1, int(math.sqrt(n)) + 1):         # Check if i is a factor        if (n % i == 0) :                         # increase the count if i            # is divisible by k            if (i % k == 0) :                count += 1             # (n/i) is also a factor check            # whether it is divisible by k            if ((n // i) % k == 0) :                count += 1               # If the number is a perfect square    # and it is divisible by k    # if i is sqrt reduce by 1    if ((i * i == n) and (i % k == 0)) :        count -= 1      return count # Driver codeif __name__ == "__main__":    n = 16    k = 4     print(countDivisors(n, k)) # This code is contributed# by ChitraNayal

C#

 // C# program to count number of divisors// of N which are divisible by Kusing System; class GFG{     // Function to count number of divisors// of N which are divisible by Kstatic int countDivisors(int n, int k){    // integer to count the divisors    int count = 0, i;     // Traverse from 1 to sqrt(N)    for (i = 1; i <= Math.Sqrt(n); i++)    {         // Check if i is a factor        if (n % i == 0)        {            // increase the count if i            // is divisible by k            if (i % k == 0)            {                count++;            }             // (n/i) is also a factor check            // whether it is divisible by k            if ((n / i) % k == 0)            {                count++;            }        }    }       i--;     // If the number is a perfect square    // and it is divisible by k    if ((i * i == n) && (i % k == 0))    {        count--;    }     return count;} // Driver codestatic public void Main (){    int n = 16, k = 4;    Console.WriteLine( countDivisors(n, k));}} // This code is contributed by ajit



Javascript


Output
3

Time Complexity :O(√(n))

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up