Given two given numbers a and b where 1 <= a <= b, find perfect cubes between a and b (a and b inclusive).
Examples:
Input : a = 1, b = 100 Output : 1 8 27 64 Perfect cubes in the given range are 1, 8, 27, 64 Input : a = 24, b = 576 Output : 27 64 125 216 343 512 Perfect cubes in the given range are 27, 64, 125, 216, 343, 512
This problem is similar to Perfect squares between two numbers.
Method 1 (Naive) : One naive approach is to check all the numbers between a and b (inclusive a and b)
and print the perfect cube. Following is the code for the above approach:
// A Simple Method to count cubes between a and b #include <bits/stdc++.h> using namespace std;
void printCubes( int a, int b)
{ // Traverse through all numbers in given range
// and one by one check if number is prime
for ( int i = a; i <= b; i++) {
// Check if current number 'i'
// is perfect cube
for ( int j = 1; j * j * j <= i; j++) {
if (j * j * j == i) {
cout << j * j * j << " " ;
break ;
}
}
}
} // Driver code int main()
{ int a = 1, b = 100;
cout << "Perfect cubes in given range:\n " ;
printCubes(a, b);
return 0;
} |
// A Simple Method to count cubes between a and b class Test {
static void printCubes( int a, int b)
{
// Traverse through all numbers in given range
// and one by one check if number is prime
for ( int i = a; i <= b; i++) {
// Check if current number 'i'
// is perfect cube
for ( int j = 1 ; j * j * j <= i; j++) {
if (j * j * j == i) {
System.out.print(j * j * j + " " );
break ;
}
}
}
}
// Driver method
public static void main(String[] args)
{
int a = 1 , b = 100 ;
System.out.println( "Perfect cubes in given range:" );
printCubes(a, b);
}
} |
# A Simple Method to count cubes between a and b def printCubes(a, b) :
# Traverse through all numbers in given range
# and one by one check if number is prime
for i in range (a, b + 1 ) :
# Check if current number 'i'
# is perfect cube
j = 1
for j in range (j * * 3 , i + 1 ) :
if (j * * 3 = = i) :
print ( j * * 3 , end = " " )
break
# Driver code a = 1 ; b = 100
print ( "Perfect cubes in given range: " )
printCubes(a, b) # This code is contributed by Nikita Tiwari. |
// A Simple Method to count cubes // between a and b using System;
class GFG {
static void printCubes( int a, int b)
{
// Traverse through all numbers
// in given range and one by
// one check if number is prime
for ( int i = a; i <= b; i++) {
// Check if current number 'i'
// is perfect cube
for ( int j = 1; j * j * j <= i; j++) {
if (j * j * j == i) {
Console.Write(j * j * j + " " );
break ;
}
}
}
}
// Driver method
public static void Main()
{
int a = 1, b = 100;
Console.WriteLine( "Perfect cubes in"
+ " given range:" );
printCubes(a, b);
}
} // This code contribute by parashar. |
<?php // A Simple Method to count // cubes between a and b function printCubes( $a , $b )
{ // Traverse through all
// numbers in given range
// and one by one check
// if number is prime
for ( $i = $a ; $i <= $b ; $i ++)
{
// Check if current number 'i'
// is perfect cube
for ( $j = 1; $j * $j * $j <= $i ; $j ++)
{
if ( $j * $j * $j == $i )
{
echo $j * $j * $j , " " ;
break ;
}
}
}
} // Driver Code
$a = 1;
$b = 100;
echo "Perfect cubes in given range:\n " ;
printCubes( $a , $b );
// This code is contributed by ajit ?> |
<script> // A Simple Method to count // cubes between a and b function printCubes(a, b)
{ // Traverse through all
// numbers in given range
// and one by one check
// if number is prime
for (let i = a; i <= b; i++)
{
// Check if current number 'i'
// is perfect cube
for (let j = 1; j * j * j <= i; j++)
{
if (j * j * j == i)
{
document.write(j * j * j + " " );
break ;
}
}
}
} // Driver Code
let a = 1;
let b = 100;
document.write( "Perfect cubes in given range: <br> " );
printCubes(a, b);
// This code is contributed by gfgking. </script> |
Output :
Perfect cubes in given range: 1 8 27 64
Method 2 (Efficient):
We can simply take cube root of ‘a’ and cube root of ‘b’ and print the cubes of number between them.
1- Given a = 24 b = 576 2- acr = cbrt(a)) bcr = cbrt(b) acr = 3 and bcr = 8 3- Print cubes of 3 to 8 that comes under the range of a and b(including a and b both) 27, 64, 125, 216, 343, 512
Below is implementation of above steps.
// Efficient method to print cubes // between a and b #include <cmath> #include <iostream> using namespace std;
// An efficient solution to print perfect // cubes between a and b void printCubes( int a, int b)
{ // Find cube root of both a and b
int acrt = cbrt(a);
int bcrt = cbrt(b);
// Print cubes between acrt and bcrt
for ( int i = acrt; i <= bcrt; i++)
if (i * i * i >= a && i * i * i <= b)
cout << i * i * i << " " ;
} // Driver code int main()
{ int a = 24, b = 576;
cout << "Perfect cubes in given range:\n" ;
printCubes(a, b);
return 0;
} // improved by prophet1999 |
// Java progroam for Efficient method // to print cubes between a and b class Test {
// An efficient solution to print perfect
// cubes between a and b
static void printCubes( int a, int b)
{
// Find cube root of both a and b
int acrt = ( int )Math.cbrt(a);
int bcrt = ( int )Math.cbrt(b);
// Print cubes between acrt and bcrt
for ( int i = acrt; i <= bcrt; i++)
if (i * i * i >= a && i * i * i <= b)
System.out.print(i * i * i + " " );
}
// Driver method
public static void main(String[] args)
{
int a = 24 , b = 576 ;
System.out.println( "Perfect cubes in given range:" );
printCubes(a, b);
}
} |
# Python3 code for Efficient method # to print cubes between a and b def cbrt(n) :
return ( int )( n * * ( 1. / 3 ))
# An efficient solution to print # perfect cubes between a and b def printCubes(a, b) :
# Find cube root of
# both a and b
acrt = cbrt(a)
bcrt = cbrt(b)
# Print cubes between acrt and bcrt
for i in range (acrt, bcrt + 1 ) :
if (i * i * i > = a and i * i * i < = b) :
print (i * i * i, " " , end = "")
# Driver code a = 24
b = 576
print ( "Perfect cubes in given range:" )
printCubes(a, b) # This code is contributed # by Nikita Tiwari. |
// C# progroam for Efficient // method to print cubes // between a and b using System;
class GFG
{ // An efficient solution
// to print perfect
// cubes between a and b
static void printCubes( int a,
int b)
{
// Find cube root of
// both a and b
int acrt = ( int )Math.Pow(a,
( double )1 / 3);
int bcrt = ( int )Math.Pow(b,
( double )1 / 3);
// Print cubes between
// acrt and bcrt
for ( int i = acrt;
i <= bcrt; i++)
if (i * i * i >= a &&
i * i * i <= b)
Console.Write(i * i *
i + " " );
}
// Driver Code
static public void Main ()
{
int a = 24;
int b = 576;
Console.WriteLine( "Perfect cubes " +
"in given range:" );
printCubes(a, b);
}
} // This code is contributed // by ajit |
<?php // Efficient method to print // cubes between a and b // An efficient solution // to print perfect // cubes between a and b function printCubes( $a , $b )
{ // Find cube root
// of both a and b
$acrt = (int)pow( $a , 1 / 3);
$bcrt = (int)pow( $b , 1 / 3);
// Print cubes between
// acrt and bcrt
for ( $i = $acrt ; $i <= $bcrt ; $i ++)
if ( $i * $i * $i >= $a &&
$i * $i * $i <= $b )
echo $i * $i * $i , " " ;
} // Driver code $a = 24; $b = 576;
echo "Perfect cubes in given range:\n" ,
printCubes( $a , $b );
// This code is contributed by ajit ?> |
<script> // Javascript progroam for Efficient
// method to print cubes
// between a and b
// An efficient solution
// to print perfect
// cubes between a and b
function printCubes(a, b)
{
// Find cube root of
// both a and b
let acrt = parseInt(Math.pow(a, 1 / 3), 10);
let bcrt = parseInt(Math.pow(b, 1 / 3), 10);
// Print cubes between
// acrt and bcrt
for (let i = acrt; i <= bcrt; i++)
if (i * i * i >= a && i * i * i <= b)
document.write((i * i * i) + " " );
}
let a = 24;
let b = 576;
document.write( "Perfect cubes " + "in given range:" + "</br>" );
printCubes(a, b);
// This code is contributed by rameshtravel07.
</script> |
Output:
Perfect cubes in given range: 27 64 125 216 343 512
This article is contributed by Sahil Chhabra and improved by prophet1999.