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: 3Input: 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++ program to count number of divisors
// of N which are divisible by K
#include <iostream>
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 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..
# 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# 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
<script>
// Javascript implementation of above approach
// Function to count number of divisors
// of N which are divisible by K
function countDivisors(n, k)
{
// Variable to store
// count of divisors
var 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;
}
var n = 12, k = 3;
document.write(countDivisors(n, k));
// This code is contributed by SoumikMondal.
</script>
<?php
// PHP 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
function countDivisors($n, $k)
{
// Variable to store
// count of divisors
$count = 0;
// 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
$n = 12; $k = 3;
echo countDivisors($n, $k);
// This code is contributed
// by Akanksha Rai(Abby_akku)
Output
3
Time Complexity : O(N)
Auxiliary Space: O(1)
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++ program to count number of divisors
// of N which are divisible by K
#include <bits/stdc++.h>
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 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 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# 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
<script>
// Javascript 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
function countDivisors(n, k)
{
// integer to count the divisors
let 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;
}
let n = 16, k = 4;
document.write( countDivisors(n, k));
</script>
<?php
// PHP 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
function countDivisors($n, $k)
{
// integer to count the divisors
$count = 0;
// 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
$n = 16;
$k = 4;
echo (countDivisors($n, $k));
// This code is contributed
// by Shivi_Aggarwal
?>
Output
3
Time Complexity: O(√(n))
Auxiliary Space: O(1) as using constant space