📜  小于n的立方自由数

📅  最后修改于: 2021-05-06 18:34:48             🧑  作者: Mango

任何除数都不是立方数的立方自由数平方自由数(即为整数的立方的数字)。给定整数n,找到所有小于或等于n的立方自由数。

例子 :

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 

一个简单的解决方案是遍历从1到n的所有数字。对于每个数字,请检查其是否不含立方体。如果是,则打印它。

C++
// Simple C++ Program to print all cube free
// numbers smaller than or equal to n.
#include 
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


Javascript


C++
// Efficient C++ Program to print all
// cube free numbers smaller than or
// equal to n.
#include 
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<


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


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

一个有效的解决方案是使用类似Eratosthenes的筛子技术,以洗掉非立方自由数。在这里,我们将创建布尔sieve数组,并使用true值对其进行初始化。现在,我们将开始从2迭代变量’div’,并开始将div的立方的倍数标记为false,因为这些将是非立方自由数。然后,此后剩下的值为true的元素将是无立方体数。

C++

// Efficient C++ Program to print all
// cube free numbers smaller than or
// equal to n.
#include 
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<

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


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