Encuentre el enésimo número de mosaico

Dado un número entero N , la tarea es encontrar el N número de mosaico . Un número de Mosaico se puede expresar de la siguiente manera: 
Si N = A a * B b * C c donde A , B , C .. son los factores primos de N entonces el N-ésimo número de Mosaico será A * a * B * b * C*c… .

Ejemplos: 

Entrada: N = 8 
Salida:
8 se puede expresar como 2 3
Por lo tanto, el octavo número mosaico será 2 * 3 = 6

Entrada: N = 36 
Salida: 24 
36 se puede expresar como 2 2 * 3 2
2 * 2 * 3 * 2 = 24 
 

Método: Tenemos que encontrar todos los factores primos y también las potencias de los factores en el número dividiendo el número por el factor hasta que el factor divida al número. El N número de Mosaico será entonces el producto de los factores primos encontrados y sus potencias.

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the nth mosaic number
int mosaic(int n)
{
    int i, ans = 1;
 
    // Iterate from 2 to the number
    for (i = 2; i <= n; i++) {
 
        // If i is the factor of n
        if (n % i == 0 && n > 0) {
            int count = 0;
 
            // Find the count where i^count
            // is a factor of n
            while (n % i == 0) {
 
                // Divide the number by i
                n /= i;
 
                // Increase the count
                count++;
            }
 
            // Multiply the answer with
            // count and i
            ans *= count * i;
        }
    }
 
    // Return the answer
    return ans;
}
 
// Driver code
int main()
{
    int n = 36;
    cout << mosaic(n);
 
    return 0;
}

Java

// Java implementation of the approach
import java.io.*;
 
class GFG
{
     
// Function to return the nth mosaic number
static int mosaic(int n)
{
    int i, ans = 1;
 
    // Iterate from 2 to the number
    for (i = 2; i <= n; i++)
    {
 
        // If i is the factor of n
        if (n % i == 0 && n > 0)
        {
            int count = 0;
 
            // Find the count where i^count
            // is a factor of n
            while (n % i == 0)
            {
 
                // Divide the number by i
                n /= i;
 
                // Increase the count
                count++;
            }
 
            // Multiply the answer with
            // count and i
            ans *= count * i;
        }
    }
 
    // Return the answer
    return ans;
}
 
// Driver code
public static void main (String[] args)
{
     
    int n = 36;
    System.out.println (mosaic(n));
}
}
 
// This code is contributed by jit_t.

Python3

# Python3 implementation of the approach
 
# Function to return the nth mosaic number
def mosaic(n):
 
    i=0
    ans = 1
 
    # Iterate from 2 to the number
    for i in range(2,n+1):
 
        # If i is the factor of n
        if (n % i == 0 and n > 0):
            count = 0
 
            # Find the count where i^count
            # is a factor of n
            while (n % i == 0):
 
                # Divide the number by i
                n //= i
 
                # Increase the count
                count+=1
             
 
            # Multiply the answer with
            # count and i
            ans *= count * i
         
 
    # Return the answer
    return ans
 
# Driver code
 
n = 36
print(mosaic(n))
 
# This code is contributed by mohit kumar 29

C#

// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to return the nth mosaic number
static int mosaic(int n)
{
    int i, ans = 1;
 
    // Iterate from 2 to the number
    for (i = 2; i <= n; i++)
    {
 
        // If i is the factor of n
        if (n % i == 0 && n > 0)
        {
            int count = 0;
 
            // Find the count where i^count
            // is a factor of n
            while (n % i == 0)
            {
 
                // Divide the number by i
                n /= i;
 
                // Increase the count
                count++;
            }
 
            // Multiply the answer with
            // count and i
            ans *= count * i;
        }
    }
 
    // Return the answer
    return ans;
}
 
// Driver code
static public void Main ()
{
    int n = 36;
    Console.WriteLine(mosaic(n));
}
}
 
// This code is contributed by ajit..

Javascript

<script>
 
// Javascript implementation of the approach
 
// Function to return the nth mosaic number
function mosaic(n)
{
    let i, ans = 1;
 
    // Iterate from 2 to the number
    for(i = 2; i <= n; i++)
    {
         
        // If i is the factor of n
        if (n % i == 0 && n > 0)
        {
            let count = 0;
 
            // Find the count where i^count
            // is a factor of n
            while (n % i == 0)
            {
                 
                // Divide the number by i
                n = parseInt(n / i, 10);
 
                // Increase the count
                count++;
            }
 
            // Multiply the answer with
            // count and i
            ans *= count * i;
        }
    }
 
    // Return the answer
    return ans;
}
 
// Driver code
let n = 36;
document.write(mosaic(n));
 
// This code is contributed by mukesh07
 
</script>
Producción: 

24

 

Complejidad de tiempo: O (logn)

Espacio Auxiliar: O(1)

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 *