Número de divisores de un número dado N que son divisibles por K

Dado un número N y un número K. La tarea es encontrar el número de divisores de N que son divisibles por K. Aquí K es un número siempre menor o igual que √(N)

Ejemplos: 

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

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

Enfoque simple : un enfoque simple es verificar todos los números del 1 al N y verificar si algún número es un divisor de N y es divisible por K. Cuente esos números menos que N, lo que satisface ambas condiciones.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

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

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

<?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)

Javascript

<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>
Producción

3

Complejidad de tiempo : O(N)
Enfoque eficiente : La idea es ejecutar un ciclo de 1 a < √(N) y verificar si el número es un divisor de N y es divisible por K y también verificaremos si (N/i ) es divisible por K o no. Como (N/i) también será un factor de N si i es un factor de N. 
A continuación se muestra la implementación del enfoque anterior: 

C++

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

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

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

Javascript

<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>
Producción

3

Tiempo Complejidad :O(√(n))

Publicación traducida automáticamente

Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *