Related Articles

# 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 K``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``int` `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 K``def` `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 K``using` `System;` `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 ()``{``    ``int` `n = 12, k = 3;``    ` `    ``Console.WriteLine(countDivisors(n, k));``}``}` `// This code is contributed by Shashank`

## PHP

 `

## 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 K``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 <= ``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``int` `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 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)``{``    ``// 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 K``import` `math` `# Function to count number of divisors``# of N which are divisible by K``def` `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 code``if` `__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 K``using` `System;` `class` `GFG``{``    ` `// Function to count number of divisors``// of N which are divisible by K``static` `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``static` `public` `void` `Main ()``{``    ``int` `n = 16, k = 4;``    ``Console.WriteLine( countDivisors(n, k));``}``}` `// This code is contributed by ajit`

## PHP

 ``

## 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