Números libres al cubo menores que n

Un número libre del cubo Número libre del cuadrado cuyo ninguno de sus divisores es un número cúbico (un número que es el cubo de un entero). Dado un entero n, encuentre todos los números libres del cubo menores o iguales que n.

Ejemplos: 

Input :  n = 10
Output : 2 3 4 5 6 7 9 10
Note that only 1 and 8 are missing. 

Input : 20
Output : 2 3 4 5 6 7 9 10 11 12 13 14 
         15 17 18 19 20 

Una solución simple es atravesar todos los números del 1 al n. Para cada número, compruebe si está libre de cubos o no. Si es así, imprímelo. 

C++

// Simple C++ Program to print all cube free
// numbers smaller than or equal to n.
#include <bits/stdc++.h>
using namespace std;
 
// Returns true if n is a cube free
// number, else returns false.
bool isCubeFree(int n)
{
    if (n == 1)
        return false;
 
    // check for all possible divisible cubes
    for (int i = 2; i * i * i <= n; i++)
        if (n % (i * i * i) == 0)
            return false;
 
    return true;
}
 
// Print all cube free numbers smaller
// than n.
void printCubeFree(int n)
{
    for (int i = 2; i <= n; i++)
        if (isCubeFree(i))
            cout << i << " ";
}
 
/* Driver program to test above function */
int main()
{
    int n = 20;
    printCubeFree(n);
    return 0;
}

Java

// Java Program to print all cube free
// numbers smaller than or equal to n.
 
class GFG
{
    // Returns true if n is a cube free
    // number, else returns false.
    public static boolean isCubeFree(int n)
    {
        if (n == 1)
            return false;
 
        // check for all possible divisible cubes
        for (int i = 2; i * i * i <= n; i++)
            if (n % (i * i * i) == 0)
                return false;
 
        return true;
    }
 
    // Print all cube free numbers smaller
    // than n.
    public static void printCubeFree(int n)
    {
        for (int i = 2; i <= n; i++)
        {
            if (isCubeFree(i))
            {
                System.out.print ( i + " ");
            }   
        }
    }
 
    // Driver program
    public static void main(String[] args)
    {
        int n = 20;
        printCubeFree(n);
    }
}
 
// Contributed by _omg

Python3

# Python3 Program to print all cube free
# numbers smaller than or equal to n.
 
import math
 
# Returns true if n is a cube free
# number, else returns false.
def isCubeFree( n ):
    if n == 1:
        return False
     
    # check for all possible divisible cubes
    for i in range(2, int(n ** (1 / 3) + 1)):
        if (n % (i * i * i) == 0):
            return False;
 
    return True;
     
# Print all cube free numbers smaller
# than n.   
def printCubeFree( n ):
    for i in range(2, n+1):
        if (isCubeFree(i)):
            print ( i , end= " ")
             
n = 20
printCubeFree(n)
 
# Contributed by _omg

C#

// C# Program to print all cube free
// numbers smaller than or equal to n.
using System;
 
class GFG
{
    // Returns true if n is a cube free
    // number, else returns false.
    static bool isCubeFree(int n)
    {
        if (n == 1)
            return false;
 
        // check for all possible divisible cubes
        for (int i = 2; i * i * i <= n; i++)
            if (n % (i * i * i) == 0)
                return false;
 
        return true;
    }
 
    // Print all cube free numbers smaller
    // than n.
    static void printCubeFree(int n)
    {
        for (int i = 2; i <= n; i++)
        {
            if (isCubeFree(i))
            {
                Console.Write ( i + " ");
            }
        }
    }
 
    public static void Main()
    {
        int n = 20;
        printCubeFree(n);
    }
}
 
// Contributed by _omg

PHP

<?php
// Simple PHP Program to
// print all cube free
// numbers smaller than
// or equal to n.
 
// Returns true if n is
// a cube free number,
// else returns false.
function isCubeFree($n)
{
    if ($n == 1)
        return false;
 
    // check for all possible
    // divisible cubes
    for ($i = 2;
         $i * $i * $i <= $n; $i++)
        if ($n % ($i * $i * $i) == 0)
            return false;
 
    return true;
}
 
// Print all cube free
// numbers smaller than n.
function printCubeFree($n)
{
    for ($i = 2; $i <= $n; $i++)
        if (isCubeFree($i))
            echo $i . " ";
}
 
// Driver code
$n = 20;
printCubeFree($n);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// JavaScript program to print all cube free
// numbers smaller than or equal to n.
 
// Returns true if n is a cube free
// number, else returns false.
function isCubeFree(n)
{
    if (n == 1)
        return false;
 
    // Check for all possible divisible cubes
    for(let i = 2; i * i * i <= n; i++)
        if (n % (i * i * i) == 0)
            return false;
 
    return true;
}
 
// Print all cube free numbers smaller
// than n.
function prletCubeFree(n)
{
    for(let i = 2; i <= n; i++)
    {
        if (isCubeFree(i))
        {
            document.write ( i + " ");
        }   
    }
}
 
// Driver code
let N = 20;
 
prletCubeFree(N);
 
// This code is contributed by code_hunt
 
</script>
Producción: 

2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20

 

Una solución eficiente es usar la técnica similar a la Tamiz de Eratóstenes , para lavar los números que no están libres del cubo. Aquí crearemos una array de tamiz booleano y la inicializaremos con valores verdaderos. Ahora comenzaremos a iterar una variable ‘div’ desde 2, y comenzaremos a marcar los múltiplos del cubo de div como falsos, ya que esos serán los números que no están libres del cubo. Luego, después de esto, los elementos que quedan con valor verdadero serán los números libres del cubo.

C++

// Efficient C++ Program to print all
// cube free numbers smaller than or
// equal to n.
#include <bits/stdc++.h>
using namespace std;
 
void printCubeFree(int n)
{
    // Initialize all numbers as not cube free
    bool cubFree[n + 1];
    for (int i = 0; i <= n; i++)
        cubFree[i] = true;
         
    // Traverse through all possible cube roots
    for (int i = 2; i * i * i <= n; i++) {
 
        // If i itself is cube free
        if (cubFree[i]) {
 
            // Mark all multiples of i as not cube free
            for (int multiple = 1; i * i * i * multiple <= n;
                                                  multiple++)
            {
                cubFree[i * i * i * multiple] = false;
            }
        }
    }
 
    // Print all cube free numbers
    for (int i = 2; i <= n; i++) {
        if (cubFree[i] == true)
            cout<<i<<" ";
    }
}
 
// Driver code
int main()
{
    printCubeFree(20);
    return 0;
}
 
// This code is contributed by Ajit.

Java

// Efficient Java Program to print all cube free
// numbers smaller than or equal to n.
class GFG {
 
    public static void printCubeFree(int n)
    {
        // Initialize all numbers as not cube free
        boolean[] cubFree = new boolean[n + 1];
        for (int i = 0; i <= n; i++)
            cubFree[i] = true;
         
        // Traverse through all possible cube roots
        for (int i = 2; i * i * i <= n; i++) {
 
            // If i itself is cube free
            if (cubFree[i]) {
 
                // Mark all multiples of i as not cube free
                for (int multiple = 1; i * i * i * multiple <= n;
                                                   multiple++) {
 
                    cubFree[i * i * i * multiple] = false;
                }
            }
        }
 
        // Print all cube free numbers
        for (int i = 2; i <= n; i++) {
            if (cubFree[i] == true)
                System.out.print(i + " ");
        }
    }
 
    public static void main(String[] args)
    {
        printCubeFree(20);
    }
}

Python3

# Efficient Python3 Program to
# print all cube free
# numbers smaller than or
# equal to n.
 
def printCubeFree(n):
    # Initialize all numbers
    # as not cube free
    cubFree = [1]*(n + 1);
     
    # Traverse through all
    # possible cube roots
    i = 2;
    while(i * i * i <= n):
         
        # If i itself
        # is cube free
        if(cubFree[i]==1):
             
            # Mark all multiples of
            # i as not cube free
            multiple = 1;
            while(i * i * i * multiple <= n):
                cubFree[i * i * i * multiple] = 0;
                multiple+=1;
        i+=1;
    # Print all cube
    # free numbers
    for i in range(2,n+1):
        if (cubFree[i] == 1):
            print(i,end=" ");
 
# Driver Code
if __name__ == "__main__":
    printCubeFree(20);
 
# This code is contributed
# by mits

C#

// Efficient C# Program to
// print all cube free
// numbers smaller than or
// equal to n.
using System;
 
class GFG
{
public static void printCubeFree(int n)
{
     
// Initialize all numbers
// as not cube free
bool[] cubFree = new bool[n + 1];
for (int i = 0;
         i <= n; i++)
    cubFree[i] = true;
 
// Traverse through all
// possible cube roots
for (int i = 2;
         i * i * i <= n; i++)
{
 
    // If i itself
    // is cube free
    if (cubFree[i])
    {
 
        // Mark all multiples of
        // i as not cube free
        for (int multiple = 1;
                 i * i * i * multiple <= n;
                 multiple++)
        {
            cubFree[i * i * i *
                    multiple] = false;
        }
    }
}
 
// Print all cube
// free numbers
for (int i = 2; i <= n; i++)
{
    if (cubFree[i] == true)
        Console.Write(i + " ");
}
}
 
// Driver Code
public static void Main()
{
    printCubeFree(20);
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)

PHP

<?php
// Efficient PHP Program to
// print all cube free
// numbers smaller than or
// equal to n.
 
function printCubeFree($n)
{
    // Initialize all numbers
    // as not cube free
    $cubFree = array_fill(0,($n + 1), 1);
     
    // Traverse through all
    // possible cube roots
    $i = 2;
    while($i * $i * $i <= $n)
    {
         
        // If i itself
        // is cube free
        if($cubFree[$i] == 1)
        {
            // Mark all multiples of
            // i as not cube free
            $multiple = 1;
            while($i * $i * $i * $multiple <= $n)
                {
                    $cubFree[$i * $i *
                             $i * $multiple] = 0;
                    $multiple += 1;
                }
        }
        $i += 1;
    }
     
    // Print all cube
    // free numbers
    for($i = 2; $i < $n + 1; $i++)
        if ($cubFree[$i] == 1)
            echo $i . " ";
}
 
// Driver Code
printCubeFree(20);
 
// This code is contributed
// by mits
?>

Javascript

<script>
 
// Efficient Javascript program to print
// all cube free numbers smaller than or
// equal to n.   
function printCubeFree(n)
{
     
    // Initialize all numbers as not
    // cube free
    var cubFree = Array(n + 1).fill(false);
    for(i = 0; i <= n; i++)
        cubFree[i] = true;
 
    // Traverse through all possible cube roots
    for(i = 2; i * i * i <= n; i++)
    {
         
        // If i itself is cube free
        if (cubFree[i])
        {
             
            // Mark all multiples of i as not cube free
            for(multiple = 1; i * i * i * multiple <= n;
                multiple++)
            {
                cubFree[i * i * i * multiple] = false;
            }
        }
    }
 
    // Print all cube free numbers
    for(i = 2; i <= n; i++)
    {
        if (cubFree[i] == true)
            document.write(i + " ");
    }
}
 
// Driver code
printCubeFree(20);
 
// This code is contributed by aashish1995
 
</script>
Producción: 

2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20

 

Publicación traducida automáticamente

Artículo escrito por Sanket Singh 2 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 *