Related Articles
Number of divisors of a given number N which are divisible by K
• Difficulty Level : Medium
• Last Updated : 19 Oct, 2020

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

 `
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

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