Perfect cubes in a range

23 Jun, 2022
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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 = 100print("Perfect cubes in given range: ")printCubes(a, b)  # This code is contributed by Nikita Tiwari.
// A Simple Method to count cubes// between a and busing 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 bfunction 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.  
C++
Java
Python3
C#
PHP
Javascript
// 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 bvoid 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 codeint 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 bdef 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 codea = 24b = 576print("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 busing 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. 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. 
parashar
jit_t
gfgking
rameshtravel07
prophet1999
maths-cube
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Sieve of Eratosthenes
Prime Numbers
Program to find GCD or HCF of two numbers
Find minimum number of coins that make a given value
Minimum number of jumps to reach end
Algorithm to solve Rubik's Cube
The Knight's tour problem | Backtracking-1
Program for Decimal to Binary Conversion