任何除数都不是立方数的立方自由数平方自由数(即为整数的立方的数字)。给定整数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