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:
C++
#include <bits/stdc++.h>
using namespace std;
void printCubes( int a, int b)
{
for ( int i = a; i <= b; i++) {
for ( int j = 1; j * j * j <= i; j++) {
if (j * j * j == i) {
cout << j * j * j << " " ;
break ;
}
}
}
}
int main()
{
int a = 1, b = 100;
cout << "Perfect cubes in given range:\n " ;
printCubes(a, b);
return 0;
}
|
Java
class Test {
static void printCubes( int a, int b)
{
for ( int i = a; i <= b; i++) {
for ( int j = 1 ; j * j * j <= i; j++) {
if (j * j * j == i) {
System.out.print(j * j * j + " " );
break ;
}
}
}
}
public static void main(String[] args)
{
int a = 1 , b = 100 ;
System.out.println( "Perfect cubes in given range:" );
printCubes(a, b);
}
}
|
Python3
def printCubes(a, b) :
for i in range (a, b + 1 ) :
j = 1
for j in range (j * * 3 , i + 1 ) :
if (j * * 3 = = i) :
print ( j * * 3 , end = " " )
break
a = 1 ; b = 100
print ( "Perfect cubes in given range: " )
printCubes(a, b)
|
C#
using System;
class GFG {
static void printCubes( int a, int b)
{
for ( int i = a; i <= b; i++) {
for ( int j = 1; j * j * j <= i; j++) {
if (j * j * j == i) {
Console.Write(j * j * j + " " );
break ;
}
}
}
}
public static void Main()
{
int a = 1, b = 100;
Console.WriteLine( "Perfect cubes in"
+ " given range:" );
printCubes(a, b);
}
}
|
PHP
<?php
function printCubes( $a , $b )
{
for ( $i = $a ; $i <= $b ; $i ++)
{
for ( $j = 1; $j * $j * $j <= $i ; $j ++)
{
if ( $j * $j * $j == $i )
{
echo $j * $j * $j , " " ;
break ;
}
}
}
}
$a = 1;
$b = 100;
echo "Perfect cubes in given range:\n " ;
printCubes( $a , $b );
?>
|
Javascript
<script>
function printCubes(a, b)
{
for (let i = a; i <= b; i++)
{
for (let j = 1; j * j * j <= i; j++)
{
if (j * j * j == i)
{
document.write(j * j * j + " " );
break ;
}
}
}
}
let a = 1;
let b = 100;
document.write( "Perfect cubes in given range: <br> " );
printCubes(a, b);
</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.
C++
#include <cmath>
#include <iostream>
using namespace std;
void printCubes( int a, int b)
{
int acrt = cbrt(a);
int bcrt = cbrt(b);
for ( int i = acrt; i <= bcrt; i++)
if (i * i * i >= a && i * i * i <= b)
cout << i * i * i << " " ;
}
int main()
{
int a = 24, b = 576;
cout << "Perfect cubes in given range:\n" ;
printCubes(a, b);
return 0;
}
|
Java
class Test {
static void printCubes( int a, int b)
{
int acrt = ( int )Math.cbrt(a);
int bcrt = ( int )Math.cbrt(b);
for ( int i = acrt; i <= bcrt; i++)
if (i * i * i >= a && i * i * i <= b)
System.out.print(i * i * i + " " );
}
public static void main(String[] args)
{
int a = 24 , b = 576 ;
System.out.println( "Perfect cubes in given range:" );
printCubes(a, b);
}
}
|
Python3
def cbrt(n) :
return ( int )( n * * ( 1. / 3 ))
def printCubes(a, b) :
acrt = cbrt(a)
bcrt = cbrt(b)
for i in range (acrt, bcrt + 1 ) :
if (i * i * i > = a and i * i * i < = b) :
print (i * i * i, " " , end = "")
a = 24
b = 576
print ( "Perfect cubes in given range:" )
printCubes(a, b)
|
C#
using System;
class GFG
{
static void printCubes( int a,
int b)
{
int acrt = ( int )Math.Pow(a,
( double )1 / 3);
int bcrt = ( int )Math.Pow(b,
( double )1 / 3);
for ( int i = acrt;
i <= bcrt; i++)
if (i * i * i >= a &&
i * i * i <= b)
Console.Write(i * i *
i + " " );
}
static public void Main ()
{
int a = 24;
int b = 576;
Console.WriteLine( "Perfect cubes " +
"in given range:" );
printCubes(a, b);
}
}
|
PHP
<?php
function printCubes( $a , $b )
{
$acrt = (int)pow( $a , 1 / 3);
$bcrt = (int)pow( $b , 1 / 3);
for ( $i = $acrt ; $i <= $bcrt ; $i ++)
if ( $i * $i * $i >= $a &&
$i * $i * $i <= $b )
echo $i * $i * $i , " " ;
}
$a = 24; $b = 576;
echo "Perfect cubes in given range:\n" ,
printCubes( $a , $b );
?>
|
Javascript
<script>
function printCubes(a, b)
{
let acrt = parseInt(Math.pow(a, 1 / 3), 10);
let bcrt = parseInt(Math.pow(b, 1 / 3), 10);
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);
</script>
|
Output:
Perfect cubes in given range:
27 64 125 216 343 512
This article is contributed by Sahil Chhabra and improved by prophet1999. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.