Cube Free Numbers smaller than n
A cube free number square free number whose none of any divisor is a cubic number (a number which is cube of an integer). Given an integer n, find all cube free numbers smaller than or equal to n.
Examples :
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
A simple solution is to traverse through all numbers from 1 to n. For every number check if it is cube free or not. If yes, then print it.
C++
#include <bits/stdc++.h>
using namespace std;
bool isCubeFree( int n)
{
if (n == 1)
return false ;
for ( int i = 2; i * i * i <= n; i++)
if (n % (i * i * i) == 0)
return false ;
return true ;
}
void printCubeFree( int n)
{
for ( int i = 2; i <= n; i++)
if (isCubeFree(i))
cout << i << " " ;
}
int main()
{
int n = 20;
printCubeFree(n);
return 0;
}
|
Java
class GFG
{
public static boolean isCubeFree( int n)
{
if (n == 1 )
return false ;
for ( int i = 2 ; i * i * i <= n; i++)
if (n % (i * i * i) == 0 )
return false ;
return true ;
}
public static void printCubeFree( int n)
{
for ( int i = 2 ; i <= n; i++)
{
if (isCubeFree(i))
{
System.out.print ( i + " " );
}
}
}
public static void main(String[] args)
{
int n = 20 ;
printCubeFree(n);
}
}
|
Python3
import math
def isCubeFree( n ):
if n = = 1 :
return False
for i in range ( 2 , int (n * * ( 1 / 3 ) + 1 )):
if (n % (i * i * i) = = 0 ):
return False ;
return True ;
def printCubeFree( n ):
for i in range ( 2 , n + 1 ):
if (isCubeFree(i)):
print ( i , end = " " )
n = 20
printCubeFree(n)
|
C#
using System;
class GFG
{
static bool isCubeFree( int n)
{
if (n == 1)
return false ;
for ( int i = 2; i * i * i <= n; i++)
if (n % (i * i * i) == 0)
return false ;
return true ;
}
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);
}
}
|
PHP
<?php
function isCubeFree( $n )
{
if ( $n == 1)
return false;
for ( $i = 2;
$i * $i * $i <= $n ; $i ++)
if ( $n % ( $i * $i * $i ) == 0)
return false;
return true;
}
function printCubeFree( $n )
{
for ( $i = 2; $i <= $n ; $i ++)
if (isCubeFree( $i ))
echo $i . " " ;
}
$n = 20;
printCubeFree( $n );
?>
|
Javascript
<script>
function isCubeFree(n)
{
if (n == 1)
return false ;
for (let i = 2; i * i * i <= n; i++)
if (n % (i * i * i) == 0)
return false ;
return true ;
}
function prletCubeFree(n)
{
for (let i = 2; i <= n; i++)
{
if (isCubeFree(i))
{
document.write ( i + " " );
}
}
}
let N = 20;
prletCubeFree(N);
</script>
|
Output:
2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20
An efficient solution is to use Sieve of Eratosthenes like technique, to wash out the non cube free numbers. Here we will create boolean sieve array and initialize it with true values. Now we will start iterating a variable ‘div’ from 2, and start marking multiples of cube of div as false as those will be the non cube free numbers. Then after this the elements left with value true will be the cube free numbers.
C++
#include <bits/stdc++.h>
using namespace std;
void printCubeFree( int n)
{
bool cubFree[n + 1];
for ( int i = 0; i <= n; i++)
cubFree[i] = true ;
for ( int i = 2; i * i * i <= n; i++) {
if (cubFree[i]) {
for ( int multiple = 1; i * i * i * multiple <= n;
multiple++)
{
cubFree[i * i * i * multiple] = false ;
}
}
}
for ( int i = 2; i <= n; i++) {
if (cubFree[i] == true )
cout<<i<< " " ;
}
}
int main()
{
printCubeFree(20);
return 0;
}
|
Java
class GFG {
public static void printCubeFree( int n)
{
boolean [] cubFree = new boolean [n + 1 ];
for ( int i = 0 ; i <= n; i++)
cubFree[i] = true ;
for ( int i = 2 ; i * i * i <= n; i++) {
if (cubFree[i]) {
for ( int multiple = 1 ; i * i * i * multiple <= n;
multiple++) {
cubFree[i * i * i * multiple] = false ;
}
}
}
for ( int i = 2 ; i <= n; i++) {
if (cubFree[i] == true )
System.out.print(i + " " );
}
}
public static void main(String[] args)
{
printCubeFree( 20 );
}
}
|
Python3
def printCubeFree(n):
cubFree = [ 1 ] * (n + 1 );
i = 2 ;
while (i * i * i < = n):
if (cubFree[i] = = 1 ):
multiple = 1 ;
while (i * i * i * multiple < = n):
cubFree[i * i * i * multiple] = 0 ;
multiple + = 1 ;
i + = 1 ;
for i in range ( 2 ,n + 1 ):
if (cubFree[i] = = 1 ):
print (i,end = " " );
if __name__ = = "__main__" :
printCubeFree( 20 );
|
C#
using System;
class GFG
{
public static void printCubeFree( int n)
{
bool [] cubFree = new bool [n + 1];
for ( int i = 0;
i <= n; i++)
cubFree[i] = true ;
for ( int i = 2;
i * i * i <= n; i++)
{
if (cubFree[i])
{
for ( int multiple = 1;
i * i * i * multiple <= n;
multiple++)
{
cubFree[i * i * i *
multiple] = false ;
}
}
}
for ( int i = 2; i <= n; i++)
{
if (cubFree[i] == true )
Console.Write(i + " " );
}
}
public static void Main()
{
printCubeFree(20);
}
}
|
PHP
<?php
function printCubeFree( $n )
{
$cubFree = array_fill (0,( $n + 1), 1);
$i = 2;
while ( $i * $i * $i <= $n )
{
if ( $cubFree [ $i ] == 1)
{
$multiple = 1;
while ( $i * $i * $i * $multiple <= $n )
{
$cubFree [ $i * $i *
$i * $multiple ] = 0;
$multiple += 1;
}
}
$i += 1;
}
for ( $i = 2; $i < $n + 1; $i ++)
if ( $cubFree [ $i ] == 1)
echo $i . " " ;
}
printCubeFree(20);
?>
|
Javascript
<script>
function printCubeFree(n)
{
var cubFree = Array(n + 1).fill( false );
for (i = 0; i <= n; i++)
cubFree[i] = true ;
for (i = 2; i * i * i <= n; i++)
{
if (cubFree[i])
{
for (multiple = 1; i * i * i * multiple <= n;
multiple++)
{
cubFree[i * i * i * multiple] = false ;
}
}
}
for (i = 2; i <= n; i++)
{
if (cubFree[i] == true )
document.write(i + " " );
}
}
printCubeFree(20);
</script>
|
Output:
2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20
Last Updated :
23 Apr, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...