Skip to content
Related Articles

Related Articles

Improve Article

Program to count number of distinct Squares and Cubes upto N

  • Difficulty Level : Easy
  • Last Updated : 24 Mar, 2021

Given a number N, the task is to find No. of perfect Squares and perfect Cubes from 1 to a given integer, N ( Both Inclusive ).
Note: Numbers which are both perfect Square and perfect Cube should be counted once.
Examples: 
 

Input: N = 70 
Output: 10 
Numbers that are perfect Square or perfect Cube 
1, 4, 8, 9, 16, 25, 27, 36, 49, 64
Input: N = 25 
Output: 6 
Numbers that are perfect Square or perfect Cube 
1, 4, 8, 9, 16, 25 
 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

 

A Naive approach is to check all numbers from 1 to N, if it is a square or cube.
Below is the implementation of above approach: 
 



C++




// C++ implementation of above approach
#include <iostream>
#include <math.h> // For sqrt() and cbrt()
using namespace std;
 
// Function to check if the
// number is a perfect square
bool isSquare(int num)
{
    int root = sqrt(num);
    return (root * root) == num;
}
 
// Function to check if the
// number is a perfect cube
bool isCube(int num)
{
    int root = cbrt(num);
    return (root * root * root) == num;
}
 
// Function to count the number
// of perfect squares and cubes
int countSC(int N)
{
    int count = 0;
    for (int i = 1; i <= N; i++) {
 
        // If a number is perfect square,
        if (isSquare(i))
            count++;
 
        // Else if the number is cube or not
        else if (isCube(i))
            count++;
    }
 
    return count;
}
 
// Driver code
int main()
{
    int N = 20;
 
    cout<< "Number of squares and cubes is " << countSC(N);
    return 0;
}

Java




// Java implementation of
// above approach
class GFG
{
 
// Function to check if the
// number is a perfect square
static boolean isSquare(int num)
{
    int root = (int)Math.sqrt(num);
    return (root * root) == num;
}
 
// Function to check if the
// number is a perfect cube
static boolean isCube(int num)
{
    int root = (int)Math.cbrt(num);
    return (root * root *
            root) == num;
}
 
// Function to count the number
// of perfect squares and cubes
static int countSC(int N)
{
    int count = 0;
    for (int i = 1; i <= N; i++)
    {
 
        // If a number is perfect
        // square,
        if (isSquare(i))
            count++;
 
        // Else if the number is
        // cube or not
        else if (isCube(i))
            count++;
    }
 
    return count;
}
 
// Driver code
public static void main(String[] args)
{
    int N = 20;
 
    System.out.println("Number of squares " +
                            "and cubes is " +
                                 countSC(N));
}
}
 
// This code is contributed
// by ChitraNayal

Python3




# Python 3 implementation of
# above approach
 
# Function to check if the
# number is a perfect square
def isSquare(num) :
    root = int(num ** (1 / 2))
 
    return (root * root) == num
 
# Function to check if the
# number is a perfect cube
def isCube(num) :
    root = int(num ** (1 / 3))
    return (root * root * root ) == num
 
# Function to count the number
# of perfect squares and cubes
def countSC(N) :
    count = 0
    for i in range(1, N + 1) :
 
        # If a number is perfect square,
        if isSquare(i) :
            count += 1
             
        # Else if the number is cube
        elif isCube(i) :
            count += 1
             
    return count
 
# Driver code
if __name__ == "__main__" :
 
    N = 20
 
    print("Number of squares and cubes is ",
                                 countSC(N))
             
# This code is contributed by ANKITRAI1

C#




// C# implementation of
// above approach
using System;
 
class GFG
{
 
// Function to check if the
// number is a perfect square
static bool isSquare(int num)
{
    int root = (int)Math.Sqrt(num);
    return (root * root) == num;
}
 
// Function to check if the
// number is a perfect cube
static bool isCube(int num)
{
    int root = (int)Math.Pow(num,
                    (1.0 / 3.0));
    return (root * root * root) == num;
}
 
// Function to count the number
// of perfect squares and cubes
static int countSC(int N)
{
    int count = 0;
    for (int i = 1; i <= N; i++)
    {
 
        // If a number is perfect
        // square,
        if (isSquare(i))
            count++;
 
        // Else if the number is
        // cube or not
        else if (isCube(i))
            count++;
    }
 
    return count;
}
 
// Driver code
public static void Main()
{
    int N = 20;
 
    Console.Write("Number of squares and " +
                  "cubes is " + countSC(N));
}
}
 
// This code is contributed
// by ChitraNayal

PHP




<?php
// PHP implementation of above approach
 
// Function to check if the
// number is a perfect square
function isSquare($num)
{
    $root = (int)sqrt($num);
    return ($root * $root) == $num;
}
 
// Function to check if the
// number is a perfect cube
function isCube($num)
{
    $root = (int)pow($num, 1 / 3);
    return ($root * $root *
            $root) == $num;
}
 
// Function to count the number
// of perfect squares and cubes
function countSC($N)
{
    $count = 0;
    for ($i = 1; $i <= $N; $i++)
    {
 
        // If a number is
        // perfect square,
        if (isSquare($i))
            $count++;
 
        // Else if the number
        // is cube or not
        else if (isCube($i))
            $count++;
    }
 
    return $count;
}
 
// Driver code
$N = 20;
 
echo "Number of squares and " .
     "cubes is " . countSC($N);
 
// This code is contributed
// by ChitraNayal
?>

Javascript




<script>
 
    // Javascript implementation of above approach
     
    // Function to check if the
    // number is a perfect square
    function isSquare(num)
    {
        let root = parseInt(Math.sqrt(num), 10);
        return (root * root) == num;
    }
 
    // Function to check if the
    // number is a perfect cube
    function isCube(num)
    {
        let root = parseInt(Math.cbrt(num), 10);
        return (root * root * root) == num;
    }
     
    // Function to count the number
    // of perfect squares and cubes
    function countSC(N)
    {
        let count = 0;
        for (let i = 1; i <= N; i++) {
 
            // If a number is perfect square,
            if (isSquare(i))
                count++;
 
            // Else if the number is cube or not
            else if (isCube(i))
                count++;
        }
 
        return count;
    }
 
    let N = 20;
   
    document.write("Number of squares and cubes is " + countSC(N));
 
</script>
Output: 
Number of squares and cubes is 5

 

Efficient Approach: 
 

  1. Number of squares from 1 to N is floor(sqrt(N)).
  2. Number of cubes from 1 to N is floor(cbrt(N)).
  3. Eliminate the numbers which are both square and cube ( like 1, 64…. ) by subtracting floor(sqrt(cbrt(N))) from it.

Below is the implementation of the above approach: 
 

C++




// C++ implementation of above approach
#include <iostream>
#include <math.h> // For sqrt() and cbrt()
using namespace std;
 
// Function to count the number
// of perfect squares and cubes
int countSC(int N)
{
    int res = (int)sqrt(N) + (int)cbrt(N)
              - (int)(sqrt(cbrt(N)));
 
    return res;
}
 
// Driver code
int main()
{
    int N = 20;
 
    cout << "Number of squares and cubes is " << countSC(N);
    return 0;
}

Java




// Java implementation of
// above approach
class GFG
{
 
// Function to count the number
// of perfect squares and cubes
static int countSC(int N)
{
    int res = (int)Math.sqrt(N) +
              (int)Math.cbrt(N) -
              (int)(Math.sqrt(Math.cbrt(N)));
 
    return res;
}
 
// Driver code
public static void main(String[] args)
{
    int N = 20;
 
    System.out.println("Number of squares " +
                            "and cubes is " +
                                 countSC(N));
}
}
 
// This code is contributed
// by ChitraNayal

Python3




# Python implementation of
# above approach
import math # for sqrt()
 
# Function to count the number
# of perfect squares and cubes
def countSC(N):
    res = (int(math.sqrt(N)) +
           int(N ** (1 / 3)) -
           int(math.sqrt(N ** (1 / 3))))
 
    return res
 
# Driver code
N = 20
print("Number of squares and cubes is",
                            countSC(N))
 
# This code is contributed
# by vaibhav29498

C#




//C# implementation of
// above approach
using System;
public class GFG {
 
    // Function to count the number
    // of perfect squares and cubes
    static int countSC(int N)
    {
        int res = (int)(Math.Sqrt(N) +
            Math.Ceiling(Math.Pow(N, (double)1 / 3)) -
            (Math.Sqrt(Math.Ceiling(Math.Pow(N, (double)1 / 3)))));
 
        return res;
    }
 
    // Driver code
    public static void Main()
    {
        int N = 20;
 
        Console.Write("Number of squares " + "and cubes is " +
                countSC(N));
    }
}
 
 
/*This code is contributed by 29AjayKumar*/

PHP




<?php
// PHP implementation of above approach
 
// Function to count the number
// of perfect squares and cubes
function countSC($N)
{
    $res = sqrt($N) + pow($N, 1 / 3) -
                (sqrt(pow($N, 1 / 3)));
 
    return floor($res);
}
 
// Driver code
$N = 20;
 
echo "Number of squares and cubes is " ,
                            countSC($N);
 
// This code is contributed
// by Shashank
?>

Javascript




<script>
 
    // Javascript implementation of above approach
     
    // Function to count the number
    // of perfect squares and cubes
    function countSC(N)
    {
        let res = parseInt(Math.sqrt(N), 10) + parseInt(Math.cbrt(N), 10) - parseInt(Math.sqrt(parseInt(Math.cbrt(N), 10)), 10);
 
        return res;
    }
 
    let N = 20;
  
    document.write("Number of squares and cubes is " + countSC(N));
     
</script>
Output: 
Number of squares and cubes is 5

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :